Win32 version of Scribus

From Scribus Wiki
Revision as of 12:38, 6 July 2005 by Skoorb (talk | contribs) (update to QT4)
Jump to navigation Jump to search
This article is part of the Ongoing Discussions series.
Installation Usability MacOS Fonts Other


Introduction

In February 2005, Trolltech announced that version 4 of the QT library used by Scribus will be available for Windows under the GNU General Public License (GPL). As Of July 2005, this release (QT4) is avalable. This brings the possibility of a native Windows port of Scribus a step closer. It's still a long way off though, and not really in anyone's plans. First, the developers nees to get to know QT4, and then Scribus would need to be updated to QT4 (a substantial job in itself) then ported to Windows (the easy bit). So it might happen at some point, but don't hold your breath!

However, don't forget we already have one (semi) working recipe for Installing Scribus on Win32 using version 1.2.1 binary snapshots compiled for Cygwin/QT3/X11. :)

Native version of Scribus for Win32

There has been various mails from one British developer on his efforts to compile Scribus natively under Windows. There is nothing to be seen yet, neither a roadmap nor a single screen shot, so don't expect fast progress in the near future.

More recently, Jean Ghali started work on a native win32 port. Details on that can be found below.

Status

PFJ's porting effort

Jean Ghali's porting effort

  • Jean Ghali has been submitting a series of patches to improve win32 compatibility and MSVC++ support, with the goal of getting a full-featured win32 build. See this mailing list post and the thread it spawned under the title "Scribus compiled with msvc.net 2002 : let's start debugging".
  • The win32 support bug contains a list of related bugs and discussion that may be useful.
  • Since Jean is working on MS Visual Studio based builds, the Visual Studio Express Edition might be of interest to anybody who's interested in helping out. Specifically, you'd want the C++ beta. Note that according to the FAQ from Microsoft "Our plan is to offer the Express products for $49 per product when they are released." (Presumably US$).

Discussion

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009881.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009886.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009889.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009890.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009892.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009894.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009893.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009910.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009896.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009897.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009898.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-March/009909.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011628.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011629.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011631.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011705.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011630.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011632.html

http://nashi.altmuehlnet.de/pipermail/scribus/2005-June/011633.html

Scribus for Cygwin

Current status

In progress:

Jean Ghali has been submitting a series of patches to improve win32 compatibility and MSVC++ support, with the goal of getting a full-featured win32 build. See this mailing list post and the thread it spawned under the title "Scribus compiled with msvc.net 2002 : let's start debugging".

Maybe OK:

Note that no effort is currently underway to improve Cygwin support.

Yet not OK:

  • Working procedure for installing Scribus 1.3.* from binaries on Cygwin/X11/Win32
  • Working procedure for installing Scribus 1.3.* from CVS source on Cygwin/X11/Win32
  • Easy to use installer for binary installation of Scribus 1.2.* and 1.3.*
  • Purple page background in Scribus/Cygwin

Discussion

Now efforts to compile the latest Scribus for Cygwin/X11 are ongoing, though I haven't been successful yet. However I have gotten as far as a running a successful configure of the 1.3 version from CVS, and there is a patch available for the 1.2.1 version at the kde-cygwin download area.

Here are some notes from some of the experiences I've had so far:



Here's another snapshot of my latest efforts. --Hap0 23:54, 22 Mar 2005 (UTC)

  514  rm -fr Scribus
  515  export CVSROOT=:pserver:anoncvs@scribus.info:/cvs
  516  cvs -z3 co -r Version13x Scribus
  517  tar cvf Scribus-fresh-cvs.tar Scribus/
  519  cd Scribus
  520  make -f Makefile.cvs
  521  ./configure
  522  make
  523  history | tail -n 15

$ make -f Makefile.cvs
This Makefile is only for the CVS repository
This will be deleted before making the distribution

/usr/bin/autoconf: line 312:  1640 Broken pipe ${AUTO_STABLE}/bin/autoconf --version
/usr/bin/autoheader: line 278:  1304 Broken pipe ${AUTO_STABLE}/bin/autoheader --version
/usr/bin/automake: line 327:   116 Broken pipe ${AUTO_STABLE}/bin/automake --version
*** Creating acinclude.m4
*** Creating list of subdirectories
*** Creating configure.files
*** Creating configure.in
*** Creating aclocal.m4
/usr/share/aclocal/vorbis.m4:8: warning: underquoted definition of AM_PATH_VORBIS
  run info '(automake)Extending aclocal'
  or see http://sources.redhat.com/automake/automake.html#Extending-aclocal
/usr/share/aclocal/ogg.m4:8: warning: underquoted definition of AM_PATH_OGG
/usr/share/aclocal/freetype2.m4:7: warning: underquoted definition of AC_CHECK_FT2
/usr/share/aclocal/ao.m4:9: warning: underquoted definition of AM_PATH_AO
*** Creating configure
*** Creating config.h template
*** Creating Makefile templates
*** Postprocessing Makefile templates
*** Creating date/time stamp
*** Finished
    Don't forget to run ./configure
    If you haven't done so in a while, run ./configure --help

$ ./configure
...
Configuration Summary:

Libraries:
   Freetype2 installed:     Yes
   Fontconfig found:        Yes
   CUPS installed:          No
   LittleCMS installed:     Yes
   libtiff installed:       Yes
   Libxml2 installed:       Yes
The Scripter-Plugin will not be compiled.
Configuration options:
   Debugging enabled:       No


Good - your configure finished. Start make now

$ make
... .libs/pdflib.o(.text$_ZN11QMapPrivateI7QStringS0_E5clearEP8QMapNodeIS0_S0_E[QMapPrivate<QString, QString>::clear(QMapNod
e<QString, QString>*)]+0x3f):pdflib.cpp: undefined reference to `QString::shared_null'
.libs/pdflib.o(.text$_ZN11QMapPrivateI7QStringS0_E5clearEP8QMapNodeIS0_S0_E[QMapPrivate<QString, QString>::clear(QMapNod
e<QString, QString>*)]+0x49):pdflib.cpp: undefined reference to `QStringData::deleteSelf()'
.libs/pdflib.o(.text$_ZN11QMapPrivateI7QStringS0_E5clearEP8QMapNodeIS0_S0_E[QMapPrivate<QString, QString>::clear(QMapNod
e<QString, QString>*)]+0x5e):pdflib.cpp: undefined reference to `QString::shared_null'
.libs/pdflib.o(.text$_ZN11QMapPrivateI7QStringS0_E5clearEP8QMapNodeIS0_S0_E[QMapPrivate<QString, QString>::clear(QMapNod
e<QString, QString>*)]+0x68):pdflib.cpp: undefined reference to `QStringData::deleteSelf()'
.libs/pdflib.o(.text$_ZN10QPtrVectorI10VColorStopE10deleteItemEPv[QPtrVector<VColorStop>::deleteItem(void*)]+0x35):pdfli
b.cpp: undefined reference to `QString::shared_null'
.libs/pdflib.o(.text$_ZN10QPtrVectorI10VColorStopE10deleteItemEPv[QPtrVector<VColorStop>::deleteItem(void*)]+0x3f):pdfli
b.cpp: undefined reference to `QStringData::deleteSelf()'
.libs/pdflib.o(.text$_ZN9QMemArrayI6FPointE6detachEv[QMemArray<FPoint>::detach()]+0x11):pdflib.cpp: undefined reference
to `QGArray::duplicate(QGArray const&)'
.libs/pdflib.o(.text$_ZN9QMemArrayIcE6detachEv[QMemArray<char>::detach()]+0x11):pdflib.cpp: undefined reference to `QGAr
ray::duplicate(QGArray const&)'
collect2: ld returned 1 exit status
make[3]: *** [libpdf.la] Error 1
make[3]: Leaving directory `/home/cboothe/src/Scribus/scribus/libpdf'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/cboothe/src/Scribus/scribus'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/cboothe/src/Scribus'
make: *** [all] Error 2

And here's a snapshot of what happened going through the steps as suggested by Ralf:

  537  rm -fr Scribus
  538  tar xvf Scribus-fresh-cvs.tar
  539  cd Scribus
  540  make -f Makefile.cvs
  541  export CFLAGS="-fdata-sections"
  542  export CXXFLAGS="-fdata-sections"
  543  export LDFLAGS="-L/home/cboothe/src/qt-3/lib"
  544  ./configure --prefix=/opt/scribus/1.3
  545  make
  546  history | tail -n 25

$ make -f Makefile.cvs
This Makefile is only for the CVS repository
This will be deleted before making the distribution

/usr/bin/autoconf: line 312:  1732 Broken pipe             ${AUTO_STABLE}/bin/autoconf --version
/usr/bin/autoheader: line 278:  1292 Broken pipe             ${AUTO_STABLE}/bin/autoheader --version
/usr/bin/automake: line 327:   548 Broken pipe             ${AUTO_STABLE}/bin/automake --version
*** Creating acinclude.m4
*** Creating list of subdirectories
*** Creating configure.files
*** Creating configure.in
*** Creating aclocal.m4
/usr/share/aclocal/vorbis.m4:8: warning: underquoted definition of AM_PATH_VORBIS
  run info '(automake)Extending aclocal'
  or see http://sources.redhat.com/automake/automake.html#Extending-aclocal
/usr/share/aclocal/ogg.m4:8: warning: underquoted definition of AM_PATH_OGG
/usr/share/aclocal/freetype2.m4:7: warning: underquoted definition of AC_CHECK_FT2
/usr/share/aclocal/ao.m4:9: warning: underquoted definition of AM_PATH_AO
*** Creating configure
*** Creating config.h template
*** Creating Makefile templates
*** Postprocessing Makefile templates
*** Creating date/time stamp
*** Finished
    Don't forget to run ./configure
    If you haven't done so in a while, run ./configure --help

$ export CFLAGS="-fdata-sections"
$ export CXXFLAGS="-fdata-sections"
$ export LDFLAGS="-L/home/cboothe/src/qt-3/lib"
$ ./configure --prefix=/opt/scribus/1.3
...
config.status: executing depfiles commands

Configuration Summary:

Libraries:
   Freetype2 installed:     Yes
   Fontconfig found:        Yes
   CUPS installed:          No
   LittleCMS installed:     Yes
   libtiff installed:       Yes
   Libxml2 installed:       Yes
The Scripter-Plugin will not be compiled.
Configuration options:
   Debugging enabled:       No


Good - your configure finished. Start make now

$ make
...
.libs/pdflib.o(.text$_ZN9QMemArrayIcE6detachEv[QMemArray<char>::detach()]+0x11):pdflib.cpp: undefined reference to `QGArray::duplicate(QGArray const
&)'
collect2: ld returned 1 exit status
make[3]: *** [libpdf.la] Error 1
make[3]: Leaving directory `/home/cboothe/src/Scribus/scribus/libpdf'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/cboothe/src/Scribus/scribus'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/cboothe/src/Scribus'
make: *** [all] Error 2

With the following commands, I already got Scribus configuring fine, but I accidently deleted it again so now with that config it gives an error when checking for qt. The error message in config.log is very similar to the error I got when making scribus after my succesful ./configure.

--jo-hannes 07:12, 18 Mar 2005 (UTC)

Export commands:

export CFLAGS="-fdata-sections"
export CXXFLAGS="-fdata-sections"
export LDFLAGS="-Wl,--enable-runtime-pseudo-reloc,--script /usr/local/lib/qt/mkspecs/cygwin-g++/i386pe.x-no-rdata,-lqt-mt"

The error at checking for Qt:

checking for Qt... configure: error: Qt (>= Qt 3.3) (library qt-mt) not found. Please check your installation!
For more details about this problem, look at the end of config.log.
Make sure that you have compiled Qt with thread support!

And the error in config.log

configure:40114: checking for Qt
configure: 40182: /opt/qt/3.3/include/qstyle.h
taking that
configure:40297: rm -rf SunWS_cache; g++ -o conftest.exe -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -O2 -fno-exceptions -fno-check-new -fno-common -I/opt/qt/3.3/include -I/usr/X11R6/include  -DQT_THREAD_SUPPORT   -L/opt/qt/3.3/lib -L/usr/X11R6/lib   conftest.cc  -lqt-mt -lpng -lz -lm -ljpeg   -lXext -lX11 -lSM -lICE  -lpthread 1>&5
collect2: ld terminated with signal 11 [Segmentation fault], core dumped
/opt/qt/3.3/lib/libqt-mt.dll.a(.text+0x0):crtstuff.c: multiple definition of `___do_sjlj_init'
/usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/crtbegin.o(.text+0x0):crtstuff.c: first defined here
/opt/qt/3.3/lib/libqt-mt.dll.a(.text+0x3c52a0):crtstuff.c: multiple definition of `QGList::count() const'
/cygdrive/c/DOKUME~1/johannes/LOKALE~1/Temp/ccNwGMgn.o(.text$_ZNK6QGList5countEv+0x0):conftest.cc: first defined here
/opt/qt/3.3/lib/libqt-mt.dll.a(.data+0x78cc4):qrtlcodec.cpp: multiple definition of `vtable for QGList'
/cygdrive/c/DOKUME~1/johannes/LOKALE~1/Temp/ccNwGMgn.o(.rdata$_ZTV6QGList+0x0):conftest.cc: first defined here
/opt/qt/3.3/lib/libqt-mt.dll.a(.data+0x5fb3c):qrtlcodec.cpp: multiple definition of `typeinfo for QPtrCollection'
/cygdrive/c/DOKUME~1/johannes/LOKALE~1/Temp/ccNwGMgn.o(.rdata$_ZTI14QPtrCollection+0x0):conftest.cc: first defined here
/opt/qt/3.3/lib/libqt-mt.dll.a(.data+0x62604):qrtlcodec.cpp: multiple definition of `typeinfo name for QPtrCollection'
/cygdrive/c/DOKUME~1/johannes/LOKALE~1/Temp/ccNwGMgn.o(.rdata$_ZTS14QPtrCollection+0x0):conftest.cc: first defined here
/opt/qt/3.3/lib/libqt-mt.dll.a(.data+0x607ec):qrtlcodec.cpp: multiple definition of `typeinfo for QGList'
/cygdrive/c/DOKUME~1/johannes/LOKALE~1/Temp/ccNwGMgn.o(.rdata$_ZTI6QGList+0x0):conftest.cc: first defined here
/opt/qt/3.3/lib/libqt-mt.dll.a(.data+0x63ba4):qrtlcodec.cpp: multiple definition of `typeinfo name for QGList'
/cygdrive/c/DOKUME~1/johannes/LOKALE~1/Temp/ccNwGMgn.o(.rdata$_ZTS6QGList+0x0):conftest.cc: first defined here
configure:40300: $? = 1
configure: failed program was:
#include "confdefs.h"
#include <qglobal.h>
#include <qapplication.h>
#include <qcursor.h>
#include <qstylefactory.h>
#include <private/qucomextra_p.h>
#if ! (QT_VERSION >= 0x030300)
#error 1
#endif

Jo-Hanes:

collect2: ld terminated with signal 11 [Segmentation fault], core dumped

shows that ld, the linker that's called by gcc after it finishes compiling the source file, has crashed. That's pretty weird and very likely to indicate a bug in ld (probably the cygwin version).

That said, if it worked before it seems reasonable to expect it to work now. Could you have made some changes to environment variables or installed libraries since then?

--Ringerc 08:16, 18 Mar 2005 (UTC)



As i remember, i had installed the cvs version of qt in /usr/local/lib and then it worked. don't know if there were any other switches. now i have the qt-snapshot installed and it doesnt work. variables could have changed, yes. but dunno into what. libraries werent installed as is remember. will try to get it working again.

--jo-hannes 10:52, 18 Mar 2005 (UTC)


I just updated my own little code section up above to reflect my recent similar experiences with the addition of a search I ran on the file system for qt-mt.

--Hap0 19:44, 18 Mar 2005 (UTC)


Do you have tried to run the above mentioned link by hand using the code snippet from configure using the flags set by LDFLAGS ? Seems that the LDFLAGS isn't taken.

--RHabacker 23:58, 18 Mar 2005 (UTC)



I found a file that is created when configuring Scribus crashes with precompiled qt3 installed. im posting the content here, possibly someone knows what to do with it.

Exception: STATUS_ACCESS_VIOLATION at eip=0042991F
eax=00000000 ebx=00000024 ecx=0A8772EC edx=0A877270 esi=00000000 edi=0A877200
ebp=0022EF28 esp=0022EEC0 program=C:\cygwin\bin\ld.exe, pid 1564, thread main
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame     Function  Args
0022EF28  0042991F  (0000001F, 0041E17C, 0022EF68, 00419FC2)
0022EF38  004231DE  (0A050270, 00000000, 0022EF58, 00428C68)
0022EF68  00419FC2  (0A053780, 61802E40, 7FFDD000, 00000000)
0022EFD0  0041DA85  (0000001F, 61802E40, 0A0500A8, 0022F028)
0022F010  610064A3  (0022F028, 0022F850, 00000000, 7C922937)
0022FF90  610066B0  (00000000, 00000000, 00000000, 00000000)
End of stack trace

--jo-hannes 17:18, 30 Mar 2005 (UTC)


You're unlikely to be able to get a working Cygwin build without patches. Cygwin doesn't support libraries with undefined symbols. Scribus plugins must be libraries with undefined symbols. Thus, you must link the plugins into the core (which isn't supported by our current plug-in API) or convert Scribus to be a library the plugins and a "thin" main app can link to. Check out bug 576 for some work that was done on that a while ago.

If somone wants to bring that up to date and clean it up a bit, I'm willing to see if it's practical to merge into mainline CVS. I'm not sure it is though - I don't want to make too much mess in the build system for the sake of Cygwin.

--Ringerc 07:09, 6 Jul 2005 (UTC)