OlgaTPark / tenfourfox

Mozilla for Power Macintosh.
http://www.tenfourfox.com/
Other
30 stars 0 forks source link

My stupid bunch of questions #1

Open OlgaTPark opened 6 years ago

OlgaTPark commented 6 years ago

This issue is for my questions about TenFourFox. (There's no hurry to answer them!)

classilla commented 6 years ago

The fork Riccardo is working on is also an Intel build. Based on our previous conversation, I didn't inform him of your work. If you want, I can connect you both together.

As far as the second idea, I'm not opposed in theory, but I'd need to see a diff before saying okay, of course. Whatever you do should still keep the PPC/gcc 4.8 configuration as the "baseline." I'd prefer to accept this once FPR6 is live (around March 12).

OlgaTPark commented 6 years ago

So I'm not alone anymore… As I said, if Riccardo wants help (at least what I could provide) he could freely ask me. I could also send you a contact e-mail address, if you want.

I'll try to upload (later) some diffs for what I did to the build toolchain…

classilla commented 6 years ago

@rmottola See comments above, if you're interested in collabourating.

rmottola commented 6 years ago

my "fork" tries to be an as-close-as-possibile Intel build of TenFourFox. Right now I am duplicating the same toolchain on 10.5/Intel. If feasible, I maintain my fork only as staging area, for continuous pullable requests as well as to share code with other people helping out. In the future I want to explore moving beyond gcc 4.8 (either with gcc or clang or even trying both, but starting as close as possible with head is useful. The current status of my project is: 99% (except one glitch) build, font-endiannes are fixed and the application starts. Most of these changes are pulled in, some are ready to be. The big issue is currently breakage of the JavaScript engine.

OlgaTPark commented 6 years ago

On my side, I'm working on an Intel build for Mac OS X 10.5 (principally) and 10.6 (and they run but I didn't published yet all changes I made to TenFourFox source code). It's build with Clang (Xcode 4.6.3) on Mac OS X 10.8.

For JavaScript, you can see (and freely use): https://github.com/OlgaTPark/tenfourfox/commit/ecb899273b5d8759d73a4f6b7f3fdecc1cc39e99 (And in particular, the explosive file: https://github.com/OlgaTPark/tenfourfox/commit/ecb899273b5d8759d73a4f6b7f3fdecc1cc39e99#diff-9ee5c9b147cebb05dd71337ed1207b9f) (Please note that I compared unchanged Firefox source code files against TenFourFox ones and reverted everything who seemed to be PowerPC-specific. The JIT in my build works very well on 10.5.) I hope this could help you!

Concerning an 10.4 Intel version, I tried to build it last week-end but I've got a strange linker bug…

rmottola commented 6 years ago

I am working on 10.5 with 10.4 as a target, 32bit. From there I plan to work up, but I want to be as close as possible to Cameron, maybe then work upwards. If you keep up-to-date with master, you might already get some "fixes"

rmottola commented 6 years ago

the changes to CodeGenerator scare me, can we discuss them? The rest of changes I 99% have them written with slightly different #ifdef's and do not have good (nor bad) effects on the tests

OlgaTPark commented 6 years ago

As I said, I just reverted with #ifdef's most of the changes made to TenFourFox to match the original Firefox's source code. (More info on my methodology here.) In fact, I nearly understand nothing to what's happens in this complicated source code but I supposed that all changes were PowerPC-specific (but I tried to document what I understood).
The "nitric acid" change is just to avoid a crash (who could happens in less than one minute when the JIT is enabled). Simply, if https://github.com/OlgaTPark/tenfourfox/blob/ecb899273b5d8759d73a4f6b7f3fdecc1cc39e99/js/src/jit/CodeGenerator.cpp#L3737 is called before the end of CodeGenerator::emitAllocateSpaceForApply, the JIT crashes (that's explains my bad joke about chemistry).
I don't know if this answers you question or if you want more information ?

OlgaTPark commented 6 years ago

Some new questions:

classilla commented 6 years ago

Dunno about font BE tags. Whatever works for you guys that doesn't break PPC is fine with me.

For plugins, couldn't you just make your own "TenSixFox" DTD and reference that? That way our localizers don't have to worry about it. You can conditionally compile it or something.

rmottola commented 6 years ago

@OlgaTPark Fonts display correctly in my fork. Several fixes have been already pulled in by Cameron, the last one being being pending in my last pull request. I cannot "USE" ttf but through navigating certain links, I can prove that text is correctly displayed. Maybe you should try to update. I don't know about pluings and other things. As you noticed I fixed some minor warnings, but my first goal is to reproduce a 1:1 TenFourFox version on intel. Any "enhancements" I will do later, otherwise too many things change at one. Currently TTF/Intel is not usable for me.

OlgaTPark commented 6 years ago

For the plugin DTD, I could use conditional compilation in order to switch between TenFourFox|Firefox strings in function of the MOZ_PLUGINS macro but this is particularly dirty and fixes nothing if a new translation is installed…
The good way to install translations is particularly tricky since I'm modifying too many things:

I have two solutions in mind:

Of course, we do not need to achieve this ASAP since I'm really slow and many of my changes are debatable…

osx_install.patch.txt

classilla commented 5 years ago

@OlgaTPark I see you have an official release. Okay to post about it on the TenFourFox blog?

OlgaTPark commented 5 years ago

(Okay, you broke my plans, I was ready to put a comment on it when I saw you were faster than me!)
Hello,
No, I haven't ran out-of-business, I'm just getting slower thant ever! The good news of the day is that I'm releasing my first builds of TenFourFox. My builds are available here. As promised, there's a build for Tiger (named TenFourFox), for Leopard (named TenFiveFox) and for Snow Leopard up to Mountain Lion (named TenSixFox). Differences are explained here (I mainly have re-enabled some features that were disabled due to incompatibilites with older OSes). In particular, I have re-enabled hardware acceleration and 64-bit support on TenSixFox and, on TenFiveFox, WebRTC screen capture, native themes and H264 playback with FFmpeg (this insane feature is made possible by some hacking to the way FFmpeg is loaded by Firefox - feel free to copy it in your tree).
I also wrote some documentation about my variant of TenFourFox and translations are already bundled into the browser (so, I do not enter in conflict with your translations).
Unfortunately, this build is still based on the old TenFourFox 45.9 but the (my) adventure doesn't end here (maybe, after a few centuries millenaries, when I'll release the FPR1). You can freely inforn the world that my builds are available but they are provided as is and without any support (not before being up-to-date with your version).
Concerning a possible merge, I don't think I'll make it because I cannot prove that my modifications won't brick something on PowerPC. If someone can prove it doesn't break the PowerPC version he (or she) could negociate a merge with the main repository.
And, also, feel free to correct my orthographical mistakes or I'll never forgive myself about it! ;-)

Anyway, good continuation with TenFourFox and happy new year 2019 (with some delays, as usual with mel).

classilla commented 5 years ago

I pondered this for a couple days. Ordinarily I would ask that forks use a different name if their functionality is different (I can't demand this legally, but I usually ask so that I don't get spurious support requests). However, I'm just going to go with the same name here since it's hopefully well-known by now that no Intel version of TenFourFox is supported by me.

I'm going to cherry pick your correctness fix for minimp3 and I think the scheme you have is workable enough to go into mainline TenFourFox. Does the Enabler have a Tiger-compatible version?

Here's the blog post, for your reference: https://tenfourfox.blogspot.com/2019/03/another-choice-for-intel-tenfourfox.html

OlgaTPark commented 5 years ago

Thank you for your help and support with this Intel fork.

About FFmpeg Enabler, I tried to build it with ppc+x86+x64 support in the case you would like to use it too. Unfortunately, my build never succeeded to play H264 content with it on Mac OS X 10.4.9 Server in emulator (but it works on 10.5) — I can't explain why and the toolchain got crazy when I tried to build FFmpeg with the 10.4 SDK.
As my wiki says, FFmpeg dylibs aren't bundled into the browser due to license concerns but it could be bundled into the browser for release (and this should be easier for users — but it's just an idea).

Anyway, happy browsing with TenFourFork !

classilla commented 5 years ago

Okay, I tried putting the integration into 10.4Fx. It compiles, but it won't load the dylibs. Some debugging with dlerror() shows that you have a dependency on a later version of libiconv.2.dylib than the one Tiger provides. This jibes with some passing reports I got that the FFmpeg Enabler doesn't do anything against your 10.4-compatible browser.

The libiconv built by MacPorts is compatible, but I couldn't use change_name_tool to monkeypatch your libraries to use a copy of that library instead because you apparently built FFmpeg on a later OS X, even when I thin them to just ppc7400 (it barfs on the load commands).

How do you want to handle this?

classilla commented 5 years ago

I could upload the PPC libiconv that I know works with Tiger, but I don't have an x86 or x86_64 one.

classilla commented 5 years ago

Actually, I changed my mind here. I was able to get both 2.8 and 3.4 to compile on 10.4 PPC with full AltiVec under Xcode 2.5 (3.4 required a tiny tweak to one of the vectorizers). These work and I verified no dependencies other than system dylibs. 3.4 seems to perform a little better especially on Vimeo which has high bandwidth movies, so I'm going to use libavcodec.57.dylib instead of your 56. I also stripped them down to remove networking, not build unused libraries and disable their VP8/VP9 decoder in lieu of the faster custom AltiVec libvpx we use. So I'll distribute sets of these libraries separately built for 7400, 7450, G5 and maybe G3 if I'm feeling masochistic. Still, the comment above is why yours don't work on 10.4.9, and it looks like FFmpeg will work just fine with the old libiconv on Tiger if you can build it on a Tiger system.

OlgaTPark commented 5 years ago

On my side, I spent my whole day trying to rebuild FFmpeg on 10.5 for 10.4. I found a way to link it against the libiconv version furnished with the MacOSX10.4u.sdk but it then fails to link due to 404-not-found$UNIX2003-symbols (argh)!
I tried various ways to counter that (#define __DARWIN_UNIX03 0, trying to build with 10.4 SDK with -sysroot (stuck on not found float.h due to an #include_next <float.h> inside float.h or try to link with crt1.10.5.o who isn't in 10.4 SDK), -alias _close _close$UNIX2003 or even -L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib and -I/Developer/SDKs/MacOSX10.4u.sdk/usr/include) and none of those evil-and-dirty hacks worked. So, the toolchain hates me!

Anyway, I'm happy to see that it works for you (so now, I can go to sleep)!

OlgaTPark commented 5 years ago

Struggling with the toolchain: round 2.

I tried another way to be able to link FFmpeg libraries which can be loader on Tiger. The trick (explained on the updated wiki) was to create dummy-forward functions for the $UNIX2003-functions that doesn't exist on Tiger.
I uploaded an updated build here that works on my emulated configuration. I hope it will work for you too.

classilla commented 5 years ago

Yes, this does appear to work on my 10.4 PPC machine, though I'll probably still distribute 3.4 (libavcodec.57) separately since it looks like they improved the AltiVec in it. But it does work fine on Tiger now, so excellent!