sabotage-linux / sabotage

a radical and experimental distribution based on musl libc and busybox
http://sabo.xyz
Other
542 stars 69 forks source link

SeaMonkey is a challenge #445

Open bkauler opened 8 years ago

bkauler commented 8 years ago

I have been at it for the last few days, trying to compile SeaMonkey. Many patches created, and I'm almost there, but have got stuck.

sqlite needs another change to its recipe, for seamonkey to use it: https://github.com/bkauler/sabotage/commit/5e3648f9c8490949105d480c1732642ae750b9a1

Heaps of patches for seamonkey: https://github.com/bkauler/sabotage/commit/d1c6298f8a6bbed05cad4878569fb416bc4dc95c

And here is the latest recipe for seamonkey: https://github.com/bkauler/sabotage/commit/7f9333924f49050a27b29c7d7757aebe2d86bba3

It compiles for a very long time, must be close to the end. Pity that I have got stuck. Here is what the log is showing:

c++ -o Unified_cpp_xpcom_base1.o -c -I../../dist/stl_wrappers -I../../dist/system_wrappers -include /src/build/seamonkey/seamonkey-2.40/mozilla/config/gcc_hidden.h -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DAB_CD=en-US -DNO_NSPR_10_SUPPORT -I/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/base -I. -I/src/build/seamonkey/seamonkey-2.40/moz-build-dir/ipc/ipdl/_ipdlheaders -I/src/build/seamonkey/seamonkey-2.40/mozilla/ipc/chromium/src -I/src/build/seamonkey/seamonkey-2.40/mozilla/ipc/glue -I/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/base/../build -I/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/ds -I../../dist/include   -I/src/build/seamonkey/seamonkey-2.40/moz-build-dir/dist/include/nspr -I/src/build/seamonkey/seamonkey-2.40/moz-build-dir/dist/include/nss    -I/include/pixman-1     -fPIC   -DMOZILLA_CLIENT -include ../../mozilla-config.h -MD -MP -MF .deps/Unified_cpp_xpcom_base1.o.pp  -Wall -Wempty-body -Woverloaded-virtual -Wsign-compare -Wwrite-strings -Wno-invalid-offsetof -Wcast-align -D_GNU_SOURCE -fdata-sections -ffunction-sections -Os -g0 -fno-unwind-tables -fno-asynchronous-unwind-tables -Wa,--noexecstack -mtune=generic -I/src/build/seamonkey/seamonkey-2.40/mozilla/include -s -Wl,--gc-sections -Wl,-z,relro,-z,now -Wl,--no-keep-memory -Wl,-rpath-link=/lib -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -std=gnu++0x -pthread -pipe  -DNDEBUG -DTRIMMED   -fomit-frame-pointer  -I/src/build/seamonkey/seamonkey-2.40/mozilla/widget/gtk/compat -I/include/gtk-unix-print-2.0 -I/include/atk-1.0 -I/include/harfbuzz -I/include/gtk-2.0 -I/lib/gtk-2.0/include -I/include/pango-1.0 -I/include/cairo -I/include/pixman-1 -I/include/freetype2 -I/include/gdk-pixbuf-2.0 -pthread -I/include/glib-2.0 -I/lib/glib-2.0/include -I/include -I/include/libpng12 -Wshadow   /src/build/seamonkey/seamonkey-2.40/moz-build-dir/xpcom/base/Unified_cpp_xpcom_base1.cpp
In file included from /src/build/seamonkey/seamonkey-2.40/moz-build-dir/xpcom/base/Unified_cpp_xpcom_base1.cpp:20:0:
/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/base/nsMemoryReporterManager.cpp: In function 'nsresult SystemHeapSize(int64_t*)':
/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/base/nsMemoryReporterManager.cpp:183:21: error: variable 'SystemHeapSize(int64_t*)::mallinfo info' has initializer but incomplete type
/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/base/nsMemoryReporterManager.cpp:183:37: error: invalid use of incomplete type 'struct SystemHeapSize(int64_t*)::mallinfo'
/src/build/seamonkey/seamonkey-2.40/mozilla/xpcom/base/nsMemoryReporterManager.cpp:183:12: error: forward declaration of 'struct SystemHeapSize(int64_t*)::mallinfo'
make[4]: *** [Unified_cpp_xpcom_base1.o] Error 1
make[4]: Leaving directory `/src/build/seamonkey/seamonkey-2.40/moz-build-dir/xpcom/base'

I have given up, for now anyway. If anyone else would like to take up the challenge, go for it!

rofl0r commented 8 years ago

isn't seamonkey == firefox ?

rofl0r commented 8 years ago

mallinfo is some gnu extension for malloc, so the first thing to try is to disable all of the replacement malloc options

rofl0r commented 8 years ago

aha, found a patch http://git.alpinelinux.org/cgit/aports/tree/community/firefox-esr/mallinfo.patch

bkauler commented 8 years ago

Thanks very much for that patch!

I was worn out, but now able to go on. Applied the patch and ran "make" inside /src/build/seamonkey/seamonkey-2.40, to keep going from before. Yes, the patch works, now waiting to see how far it gets...

Regarding SeaMonkey versus Firefox, SeaMonkey is a complete suite: browser, WYSIWYG html editor, mail and news client, addressbook and IRC client. It does sync with Firefox code, but is different, and has different requirements to compile.

bkauler commented 8 years ago

Compile stopped again, I figured out another patch, then it stopped with a "jemalloc" related fault -- well the sabotage firefox recipe has "--disable-jemalloc", so I have also done that, and started the build from scratch.

God, its 2.30am. The build can continue while I sleep.

bkauler commented 8 years ago

Woke up this morning, and seamonkey compiled and installed, zero errors!!!!

Here are more patches: https://github.com/bkauler/sabotage/commit/7f9333924f49050a27b29c7d7757aebe2d86bba3 https://github.com/bkauler/sabotage/commit/d2564f639e4a780f18a2f2a10f583cc4a22a3d77

And here is the final recipe: https://github.com/bkauler/sabotage/commit/466389be0d498c8d459ec9914b1f9cf6940ec73d

I don't yet know if it won't crash in a burning heap at startup. If so, that too will be conquered.

Note, the configure options have "--enable-ldap" and "--enable-logging". I would rather have disabled both of those, but back on a glibc-based Linux, compile failed when they were disabled. Rene, the main guy at T2, spent some time on the ldap problem.

So, I set them both enabled on the musl build. haven't tried otherwise.

I just remembered, there is also "--enable-jsd", we were forced to enable that also, back a few versions. Ah, here it is: https://bugzilla.mozilla.org/show_bug.cgi?id=738879 ...it has been marked "WONTFIX".

At least one fix for disabling logging: https://bugzilla.mozilla.org/show_bug.cgi?id=1129718 ...I might give --disable-logging a go. It was a couple of versions ago, I think, when I was forced to enable it. I want to minimise writes when running from a Flash stick, and also unnecessary chewing up the limited space. ...oh, just read the last comment in that link, it still isn't fixed.

bkauler commented 8 years ago

Just a follow-up, yes, SeaMonkey works. Running it now on my Flash stick.

I don't know if it is just a matter of configuring, but typing in a keyword in the URL-bar and hitting the "Search" button does not work. It should launch one of the search engines.

No, the search engine mechanism is broken. In Preferences, it shows no search engines available. I tried to install one as an add-on, nothing happened.

rofl0r commented 8 years ago

glad to hear. i will probably be without internet for the next week, so if you have questions someone else in our irc channel might be able to help.

don570 commented 8 years ago

I have been using Barry's Xerus installed on a USB card adaptor. The LED light flashes on and off when I have the browser open. Perhaps that is the logging issue of seamonkey that Barry mentioned.

rofl0r commented 8 years ago

@bkauler : any updates ? the search engine thing is no deal-breaker, i hope ?