Archive for the 'xulrunner' Category

Iceweasel 3.6が近づいています

Iceweasel 3.6の開発が終わりそうですが3.6も3.5もバグが残っています。experimentalへアップロードする前にはそのバグを解決したいと思います。

その間に下記のパッケージを試してみて頂けたら幸いです:

amd64のバイナリパッケージはJITコンパイラが有効にされています。(Firefoxの場合は無効。他のLinuxディストリビューションもそうだと思います)そのせいでバグが現れた場合はabout:configでjavascript.options.jit.contentを無効にして下さい。amd64のJITはテストスイートを成功しているので安定したのを期待しています。

2010-03-05 20:35:14+0900

firefox, xulrunner | No Comments »

Iceweasel 3.6 approching

Work on Iceweasel 3.6 is approaching an end, but there are still issues with it and with 3.5 that I want to tackle before officially pushing to experimental.

In the meanwhile, you can already try a preview package:

The amd64 binary has the JIT compiler enabled by default (contrary to upstream default, and I guess most if not all other distros), so if you have issues with it, you'll need to disable javascript.options.jit.content from about:config. It passes the testsuite, so I expect it to be fairly stable.

2010-03-05 18:12:19+0900

firefox, xulrunner | 16 Comments »

Green is beautiful

buildd status for xulrunner mostly green

This is it! xulrunner now builds and successfully runs the checks and xpcshell-tests on all release architectures, including arm, mips, powerpc and sparc, that were all failing 2 weeks ago. 2 patch pulled from upstream, 5 patches written and sent upstream, and several more as not quite successful attempts.

What puzzles me is that e.g. the arm issue in the test suite has been known upstream for a year, yet Firefox was released on maemo (arm) without it being fixed. I mean, it only took me a few hours (if you don't count the time lost waiting for the builds to end), starting with no specific knowledge of arm, and even less of jit compilers.

Anyways, this all means work on 1.9.2 can go on.

2010-02-23 08:29:36+0900

xulrunner | 3 Comments »

Massive FAIL #2

Massive iceape buildd failure

This is what would have happened if I had waited before uploading 2.0.3-2. Courtesy of dh_install --fail-missing and its non-handling of arch:any only builds.

2010-02-18 14:33:41+0900

xulrunner | No Comments »

Massive FAIL

Massive xulrunner buildd failure

In there, a lot are due to dh_auto_configure not doing the right thing for autoconf 2.13 generated configure files, others are due to make setting MAKEFLAGS to "w", which prevents make -s to do what I expected it to do, armel has yet another crasher in the test suite (*sigh*), and I broke mipsel with the mips patch.

1.9.1.8-2 should fix the first two, and allow me to debug the armel issue (I disabled the test suite to be able to have the buildds generate the binaries, as they are much faster than the porterbox). Mipsel will have to wait for 1.9.1.8-3.

This also means 1.9.2 is delayed. Again. (and upstream releasing Firefox 3.5.8 one day later than scheduled didn't help either)

Update: I stand corrected, the one responsible for MAKEFLAGS setting to "w" seems to be make itself, not dh.

2010-02-18 10:29:08+0900

xulrunner | 2 Comments »

RC_buggy_arches = 0

(maybe)

After the two updates in the previous post, I got further and eventually fixed the root of the remaining problems on ARM.

It appears I got on the wrong track at the very beginning of the investigation. My first test was to disable the JIT compiler during the tests, and it didn't affect the result. I assumed from there that the JIT compiler was doing fine and wasn't involved. Which led me to believe the alignment of the stack at 32-bits word boundary instead of 64-bits was a standard behaviour. I turns out my first test itself was wrong, because I hadn't disabled the JIT compiler at all. You need to modify the runxpcshelltests.py script to disable the JIT, and not fiddle with the javascript.options.jit.chrome preference.

The JIT compiler was misaligning the stack, and disassembling the generated code leading to broken behaviour revealed that it was doing so when setting up arguments on the stack for function calls. While I was afraid this would be difficult to fix without changing a lot of code, and first only disabled the JIT compiler, it turns out the way nanojit works by compiling the last instructions first did make it straightforward to fix.

But ARM was not the only RC buggy architecture left after sparc and powerpc were fixed. MIPS remained. Alpha fails, too, but it is not a release architecture. Update: It appears hurd fails too, but like Alpha, it is not a release architecture.

So, while I didn't want to wait 50 hours for a build, I managed to execute a failing test with the last xulrunner-1.9.1 packages that got built (before I enabled the test suite) under qemu. And I was able to track down the origin of the bug: the xpcom layer that translate function calls between languages doesn't fill arguments correctly when they are smaller than 32 bits. While the code is adapted to the mipsel case, which is little endian, it doesn't work on mips, which is big endian. I came up with a patch that should work, and which I hope won't break mipsel as a consequence. All that is left to do is to build and test the fix. I hope someone else will be able to do that for me.

All in all except a 1.9.1.8 release this week with a lot less red on the buildd status page.

2010-02-15 09:36:49+0900

xulrunner | 1 Comment »

broken_arch -= 2

The xulrunner test suite now passes on sparc, involving a fix for an existing bug, and a new bug report.

Next target is powerpc, where, interestingly, the test suite only failed 3 tests on the porterbox, where the buildd failed 58... And contrary to sparc, the failures don't involve crashes.

Update: powerpc is now fixed, too, with a little help from luck and good timing: the 3 failing tests had all the same origin, and it was fixed a few months ago in upstream trunk.

2010-02-05 19:40:25+0900

xulrunner | No Comments »

xulrunner 1.9.1.6-2 diff stats

As part of preparing xulrunner 1.9.2 (which would lead to Iceweasel 3.6), I have gone through all the patches currently applied to the latest xulrunner release, to keep track of what should be upstreamed, what needed feedback, what patches I needed to update in upstream bugzilla, etc.

As I have talked about our differences with upstream on a few occasions already, and as I was doing this grunt work anyway, I thought it would be nice to make the results public.

First, a few reference numbers (excluding changes to generated configure files):

  • Changes between upstream 1.9.0.1 and Debian release 1.9.0.1-1: 85 files changed, 1163 insertions(+), 644 deletions(-)
  • Changes between upstream 1.9.0.16 and Debian release 1.9.0.16-1: 86 files changed, 1177 insertions(+), 634 deletions(-)
  • Changes between upstream 1.9.1 and Debian release 1.9.1-1: 70 files changed, 770 insertions(+), 363 deletions(-)
  • Changes between upstream 1.9.1.6 and Debian release 1.9.1.6-1: 76 files changed, 796 insertions(+), 380 deletions(-)
  • Changes between upstream 1.9.1.5 and upstream 1.9.1.6: 165 files changed, 3094 insertions(+), 1387 deletions(-)
  • Changes between upstream 1.9.1 and upstream 1.9.1.6: 1263 files changed, 64322 insertions(+), 67376 deletions(-) (though more than half of that relates to upstream bump of sqlite3 and the vorbis stack)

A few observations on the above data:

  • There are less changes between upstream and Debian than between two consecutive upstream versions.
  • Debian changes only account for changes to the xulrunner package, i.e. it excludes changes to Iceweasel itself, or to nspr or nss, but these are far less important in number.
  • The number of changes applied decreases when switching to a new upstream branch. This is mostly due to patches getting applied upstream.
  • Debian patches on a given branch are pretty stable. In other words, most of the work is done on the first release of the branch.

The latter used to be true, but is not anymore: xulrunner 1.9.1.6-2 added a lot of changes and is now up to: 98 files changed, 1107 insertions(+), 517 deletions(-).

What happened ? will you ask me. A lot happened: the test suite, attempts at correctly installing C++ headers and IDL files, bug fixes. Work has also been done such that make clean/distclean doesn't leave stuff around and that xulrunner can be properly built twice in a row.

Differences between 1.9.1.6-1 and 1.9.1.6-2 look like this: 31 files changed, 341 insertions(+), 167 deletions(-).

Some were stolen from bugzilla (13 files changed, 162 insertions(+), 70 deletions(-)):

Many others were sent:

A few others were filed without a patch, as I felt a proper upstreamable patch needed discussion (3 files changed, 16 insertions(+), 3 deletions(-)):

A few changes are related to the way we build and how we run the test suite (5 files changed, 35 insertions(+), 18 deletions(-)):

  • Disable python-xpcom tests for now.
  • Disable javaxpcom tests at build time when DEB_NO_JAR is unset.
  • Synchronize config/rules.mk and js/src/config/rules.mk for check-sync-dirs.py (we used to localize the changes required in each config/rules.mk, but as we now run make check they need to be synchronized)
  • Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=455238

Finally, a few were related to the Debian changes history (2 files changed, 1 insertions(+), 26 deletions(-)):

  • Remove --enable-system-lcms check, which somehow resisted merges with upstream
  • Properly clean xulrunner/installer/*.system.conf

Going through the rest of the changes between upstream and the latest Debian release, we can split in 5 categories of changes:
Those that were picked from upstream, or sent and eventually applied in 1.9.2 or trunk (12 files changed, 68 insertions(+), 41 deletions(-)):

Those that were picked from bugzilla or sent there, but are not applied upstream for various reasons (29 files changed, 138 insertions(+), 209 deletions(-)):

Those that were reported but for which I wanted feedback for a proper fix, yet a patch was applied in Debian because this was necessary (6 files changed, 22 insertions(+), 13 deletions(-)):

Those that are yet to be sent to bugzilla (15 files changed, 111 insertions(+), 54 deletions(-)):

  • xulrunner-config: Give more appropriate cflags and libs
  • Install applications in /usr/local/lib instead of /usr/lib
  • Unhide release notes link in about: but only if app.releaseNotesURL is defined
  • In about:, Don't put an about:blank link when there is no vendorURL defined
  • Don't use static strings when setting environment variables
  • Exec instead of uselessly forking in xulrunner launcher script
  • Disable optimization on alpha for the url-classifier component (this will probably wait for the test suite failures on various architectures to be fixed)
  • Build js shell and xpcshell against system libreadline
  • Don't export js_SetTraceableNativeFailed, which is only used internally
  • Increase stability and performance on mips and mipsel

And finally, the changes that are either Debian specific or not deemed upstreamable (30 files changed, 460 insertions(+), 77 deletions(-) ; this can sound huge, but see the details below):

  • Feature changes:
    • Disable APNG support when system libpng doesn't support it (6 files changed, 71 insertions(+), 10 deletions(-) ; mostly #ifdef'ing parts of the code related to animation)
    • Use application.ini from where the xulrunner-stub lies (1 files changed, 14 insertions(+), 3 deletions(-) ; This one may be dropped and replaced by something totally different, possibly upstreamed)
    • Don't register plugins if the MOZILLA_DISABLE_PLUGINS environment variable is set (1 files changed, 25 insertions(+), 0 deletions(-) ; very useful to isolate plugin-related crashes ; I don't think it's worth upstreaming considering the upcoming plugin-in-separate-process work)
    • Remove (un|)registering system (1 files changed, 0 insertions(+), 43 deletions(-) ; xulrunner versions that are installed by a package manager don't need to be registered, since the package does it already ; a variant that conditionally removes it may be upstreamable)
  • Preferences changes:
    • Set javascript.options.showInConsole (1 files changed, 1 insertions(+), 0 deletions(-))
    • Set DPI to system settings (1 files changed, 1 insertions(+), 1 deletions(-))
  • Cosmetic changes:
    • Install loading_16_grey.gif in classic.jar, and add an override for loading16.png (1 files changed, 2 insertions(+), 0 deletions(-) ; Since we don't support APNG, we replace the most used one by its (ugly) GIF equivalent)
    • Add links for about:bugs and about:README.Debian in about: (3 files changed, 19 insertions(+), 0 deletions(-) ; I'd like to make that something living in debian/extra-stuff)
  • Integration changes:
    • Add another preferences directory for applications: defaults/syspref (1 files changed, 2 insertions(+), 0 deletions(-))
    • Add an rpath to libpyloader.so and _xpcom.so (2 files changed, 2 insertions(+), 0 deletions(-) ; allows python xpcom to work out of the box)
    • Forward-port nsIBadCertListener from 1.8 (4 files changed, 266 insertions(+), 1 deletions(-) ; This is necessary for at least galeon and kazehakase, because the new interface is useless for embedding applications)
  • Build-related changes:
    • Allow to override the PYTHON_SO variable (1 files changed, 1 insertions(+), 1 deletions(-))
    • Put the crmf library before the NSS libraries (1 files changed, 1 insertions(+), 1 deletions(-))
    • Allow to build java jar files in 2 pass (2 files changed, 8 insertions(+), 2 deletions(-))
    • Avoid libxpcom being excluded from linked libraries by -Wl,--as-needed (1 files changed, 2 insertions(+), 0 deletions(-))
    • Ignore system libjpeg, libpng and zlib version checking (1 files changed, 3 insertions(+), 3 deletions(-))
    • Force to not use -fshort-wchar (1 files changed, 1 insertions(+), 1 deletions(-))
    • Add soversion to libmozjs (2 files changed, 19 insertions(+), 2 deletions(-) ; useful for couchdb, libjavascript-perl and others)
    • Don't build example component (1 files changed, 0 insertions(+), 1 deletions(-))
    • Don't install system profile (1 files changed, 0 insertions(+), 2 deletions(-))

Note, the numbers in the various diff stats obviously don't add up, since some changes overlap.

All that information doesn't account the few additional components added in debian/filemonitor and debian/extra-stuff, that account for nearly 600 lines (excluding licensing boilerplate), but I'll talk about these in another post.

This analysis also helped spotting another harmless merge error (the first one was spotted a few weeks ago and just left the --enable-system-lcms around, without any effect): a variable replacement in a Makefile that doesn't have any effect, since the 2 variables have the same value. Only a pointless 1 line change.

2010-02-04 12:52:14+0900

xulrunner | No Comments »

Sad reality

One of the major changes in the latest xulrunner upload was to enable a great part of the test suite.

The result is stunning: crashes on alpha, armel, powerpc and sparc.

Update: Also failed on mips. (though interestingly, it worked on mipsel)

2010-02-03 08:05:09+0900

xulrunner | 3 Comments »

Iceweasel 3.5.3 in unstable, and fixing RC bugs as a side-effect

I finally started the xulrunner 1.9.1 transition in unstable, and uploaded Iceweasel 3.5.3 there.

One of the nice additions to the latest xulrunner (which has actually been in experimental for a couple weeks) is a dh_xulrunner script that adds the proper xulrunner package to shlibs:Depends, which means we are getting nearer to being able to handle xulrunner transitions with binNMUs only. We are still far from it, but it is a step closer. At least, transitions should get a bit easier. The way it works is very hackish, but it apparently works well enough for the packages that currently depend on xulrunner-dev. I also added a "xulrunner" dh sequence, for the dh users.

Anyways, as a side effect of the starting transition, I ended up fixing 4 RC bugs on a single package:

Another package with 3 RC bugs is impacted by this transition, but it looks like a good candidate for removal. That's 7 RC bugs adressed by this transition, while not directly related to xulrunner.

2009-10-10 23:09:18+0900

firefox, xulrunner | 4 Comments »