Pages

Showing posts with label webkit problem compiling powerpc. Show all posts
Showing posts with label webkit problem compiling powerpc. Show all posts

Wednesday, October 5, 2011

NetBSD 5.1 pkgsrc webkit-gtk compiling problem on PowerMAC G4

After successful installation I've got working NetBSD 5.1/macppc and I tried to add some pkgs to use the MAC for workstation. Here what I've got:
NetBSD 5.1 (G4) #5: Sat Nov 19 19:39:08 EET 2011
root@macppc:/usr/src/sys/arch/macppc/compile/G4
total memory = 1152 MB
avail memory = 1102 MB
timecounter: Timecounters tick every 10.000 msec
found openpic PIC at 80040000
OpenPIC Version 1.2: Supports 4 CPUs and 64 interrupt sources.
bootpath: /pci@f2000000/mac-io@17/ata-4@1f000/disk@0:3,/netbsd
mainbus0 (root)
cpu0 at mainbus0: 7455 (Revision 3.3), ID 0 (primary)
cpu0: HID0 8450c0bc, powersave: 1
cpu0: 1000.00 MHz, 256KB L2 cache no parity parity enabled, 1MB no-parity L3 cache (DDR SRAM) at 4:1 ratio
Trying to compile some meta-pkgs like gnome or kde I ran into some problems.

webkit-gtk - Compilation fails on some file FastMalloc.cpp but all errors are redirected to /dev/null so I couldn't find how to fix this. There is also bug report from 2009 about this problem you can see it here http://mail-index.netbsd.org/pkgsrc-bugs/2009/02/01/msg030663.html. Here is the error I've got:
zsh 6 # make install
=> Bootstrap dependency digest>=20010302: found digest-20080510
===> Skipping vulnerability checks.
WARNING: No /var/db/pkg/pkg-vulnerabilities file found.
WARNING: To fix run: `/usr/sbin/pkg_admin -K /var/db/pkg fetch-pkg-vulnerabilities'.
===> Building for webkit-gtk-1.4.1nb1
/usr/pkg/bin/gmake all-am
gmake[1]: Entering directory `/usr/src/pkgsrc/www/webkit-gtk/work/webkit-1.4.1'
CXX Source/JavaScriptCore/wtf/libJavaScriptCore_la-FastMalloc.lo
Source/JavaScriptCore/wtf/FastMalloc.cpp:1299: warning: converting to 'size_t' from 'float'
Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'void WTF::TCMalloc_PageHeap::scavenge()':
Source/JavaScriptCore/wtf/FastMalloc.cpp:1637: warning: converting to 'size_t' from 'float'
Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'void WTF::TCMalloc_Central_FreeList::Populate()':
Source/JavaScriptCore/wtf/FastMalloc.cpp:2833: warning: cast from 'char*' to 'void**' increases required alignment of target type
Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'T* WTF::PageHeapAllocator::New() [with T = WTF::Span]':
Source/JavaScriptCore/wtf/FastMalloc.cpp:1142: instantiated from here
Source/JavaScriptCore/wtf/FastMalloc.cpp:1039: warning: cast from 'char*' to 'void**' increases required alignment of target type
Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'T* WTF::PageHeapAllocator::New() [with T = WTF::TCMalloc_ThreadCache]':
Source/JavaScriptCore/wtf/FastMalloc.cpp:3045: instantiated from here
Source/JavaScriptCore/wtf/FastMalloc.cpp:1039: warning: cast from 'char*' to 'void**' increases required alignment of target type
gmake[1]: *** [Source/JavaScriptCore/wtf/libJavaScriptCore_la-FastMalloc.lo] Error 1
gmake[1]: Leaving directory `/usr/src/pkgsrc/www/webkit-gtk/work/webkit-1.4.1'
gmake: *** [all] Error 2
*** Error code 2

Stop.
make: stopped in /usr/src/pkgsrc/www/webkit-gtk
*** Error code 1

Stop.
make: stopped in /usr/src/pkgsrc/www/webkit-gtk
Still no solution which means that kde web browser and epiphany web browser will not be build. After 1-2 days searching on the net for solution I decided to solve the problem myself. After some tweaking of the GNUmakefile I finally got the error message that fails the compile process
# c++ -DHAVE_CONFIG_H -I. -Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type -Wformat -Wformat-security -Wno-format-y2k -Wundef -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings -Wno-unused-parameter -Wno-parentheses -fno-exceptions -DENABLE_GLIB_SUPPORT=1 -DBUILDING_CAIRO__=1 -DBUILDING_GTK__=1 -DWTF_CHANGES -DXP_UNIX -DWTF_USE_ICU_UNICODE=1 -DWTF_USE_GSTREAMER=1 -DGTK_API_VERSION_2=1 -DNDEBUG -I./Source -I./Source/JavaScriptCore -I./Source/JavaScriptCore/API -I./Source/JavaScriptCore/assembler -I./Source/JavaScriptCore/bytecode -I./Source/JavaScriptCore/bytecompiler -I./Source/JavaScriptCore/collector/handles -I./Source/JavaScriptCore/debugger -I./Source/JavaScriptCore/ForwardingHeaders -I./Source/JavaScriptCore/interpreter -I./Source/JavaScriptCore/jit -I./Source/JavaScriptCore/parser -I./Source/JavaScriptCore/profiler -I./Source/JavaScriptCore/runtime -I./Source/JavaScriptCore/wtf -I./Source/JavaScriptCore/wtf/gobject -I./Source/JavaScriptCore/wtf/gtk -I./Source/JavaScriptCore/wtf/text -I./Source/JavaScriptCore/wtf/unicode -I./Source/JavaScriptCore/yarr -DPNG_NO_ASSEMBLER_CODE -I/usr/src/pkgsrc-current/www/webkit-gtk/work/.buildlink/include -I/usr/src/pkgsrc-current/www/webkit-gtk/work/.x11-buildlink/include/freetype2 -I/usr/src/pkgsrc-current/www/webkit-gtk/work/.x11-buildlink/include -fno-rtti -fstrict-aliasing -O3 -I/usr/src/pkgsrc-current/www/webkit-gtk/work/.buildlink/include/glib/glib-2.0 -I/usr/src/pkgsrc-current/www/webkit-gtk/work/.buildlink/lib/glib-2.0/include -D_REENTRANT -O2 -O2 -MT Source/JavaScriptCore/wtf/libJavaScriptCore_la-FastMalloc.lo -MD -MP -MF Source/JavaScriptCore/wtf/.deps/libJavaScriptCore_la-FastMalloc.Tpo -c ./Source/JavaScriptCore/wtf/FastMalloc.cpp -o Source/JavaScriptCore/wtf/libJavaScriptCore_la-FastMalloc.o
./Source/JavaScriptCore/wtf/FastMalloc.cpp:1299: warning: converting to 'size_t' from 'float'
./Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'void WTF::TCMalloc_PageHeap::scavenge()':
./Source/JavaScriptCore/wtf/FastMalloc.cpp:1637: warning: converting to 'size_t' from 'float'
./Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'void WTF::TCMalloc_Central_FreeList::Populate()':
./Source/JavaScriptCore/wtf/FastMalloc.cpp:2833: warning: cast from 'char*' to 'void**' increases required alignment of target type
./Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'T* WTF::PageHeapAllocator::New() [with T = WTF::Span]':
./Source/JavaScriptCore/wtf/FastMalloc.cpp:1142: instantiated from here
./Source/JavaScriptCore/wtf/FastMalloc.cpp:1039: warning: cast from 'char*' to 'void**' increases required alignment of target type
./Source/JavaScriptCore/wtf/FastMalloc.cpp: In member function 'T* WTF::PageHeapAllocator::New() [with T = WTF::TCMalloc_ThreadCache]':
./Source/JavaScriptCore/wtf/FastMalloc.cpp:3045: instantiated from here
./Source/JavaScriptCore/wtf/FastMalloc.cpp:1039: warning: cast from 'char*' to 'void**' increases required alignment of target type
./Source/JavaScriptCore/wtf/TCSpinLock.h: In member function 'void WTF::TCMalloc_ThreadCache::PickNextSample(size_t)':
./Source/JavaScriptCore/wtf/TCSpinLock.h:113: error: 'asm' operand requires impossible reload
Quick search over google and I found that there was such problem with compilation of webkit-gtk on other OS's on PowerPC arch. It seems that this is gcc compiler bug on macppc arch. Simple solution is to compile with -O0 (do not optimize) instead of -O2 option.

Just for now here is quick and dirty solution to this:
start building process and when GNUmakefile is generated stop the process with ctrl+c.
Now open generated GNUmakefile (usually in webkit-gtk/work/webkit-gtk-1.4.x/GNUmakefile) with some editor and replace all -O2 with -O0 then save and exit and continue the compilation process by entering the dir and typing: gmake


Here are some links for the solutions Í found:
debian solution - http://blog.gmane.org/gmane.linux.debian.ports.powerpc/month=20070801/page=8
webkit-gtk bug report - https://bugs.webkit.org/show_bug.cgi?id=14521
bug report to gcc - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10396

Unfortunately these solutions dont work on NetBSD and I'm not good enough with assembler to make myself a patch.

When this was fixed I ran into another error.
gmake[1]: Entering directory `/usr/src/pkgsrc-current/www/webkit-gtk/work/webkit-1.4.3'
test -d Source/WebKit/gtk/po/ || mkdir -p Source/WebKit/gtk/po/
/usr/bin/msgfmt -c -o Source/WebKit/gtk/po/id.mo Source/WebKit/gtk/po/id.po
test -d Source/WebKit/gtk/po/ || mkdir -p Source/WebKit/gtk/po/
/usr/bin/msgfmt -c -o Source/WebKit/gtk/po/it.mo Source/WebKit/gtk/po/it.po
Source/WebKit/gtk/po/it.po:1324: keyword "msgctxt" unknown
Source/WebKit/gtk/po/it.po:1324:8: parse error
/usr/bin/msgfmt: found 2 fatal errors
gmake[1]: *** [Source/WebKit/gtk/po/it.mo] Error 1
gmake[1]: Leaving directory `/usr/src/pkgsrc-current/www/webkit-gtk/work/webkit-1.4.3'
gmake: *** [all] Error 2
This can be fixed easy by upgrading your gettext package. cd pkgsrc/devel/gettext; make install