SeaLion (SeaMonkey / Borealis fork)

Discussions about applications built on our platform code that do not have a dedicated board.

Moderators: trava90, athenian200

dbsoft
Project Contributor
Project Contributor
Posts: 419
Joined: 2020-02-21, 17:35

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by dbsoft » 2023-11-18, 23:52

Moonchild wrote:
2023-11-18, 21:56
Maybe you could force it manually at build time with "./mach python intl/icu_sources_data.py ." somewhere?
The solution Mozilla did in Firefox 80, is to store the little endian data file (generated by the script you referenced) in the tree. Then if targeting big endian, they build icupkg ... a utility for dealing with the ICU data file for the host system and call it to convert the little endian file to big endian. This is what I ported over, with some modifications because they ONLY support building as a library, and not packaging the ICU data file in non-library form.

I tested it on MacPPC and it appeared to work, but GNU as on MacPPC is too old and doesn't support the "incbin" directive. (Also building newer versions of binutils on MacPPC don't include GNU as for some reason). So I disabled that... so on MacPPC it does not build the ICU data into the library.

The output shows it building the icupkg command but then it tries to build the ICU data library before it calls icupkg to convert it to big endian, so the file is missing. Just not sure why it is doing it in that order when I have it in the same order in the file as Mozilla... My first idea would be to move the .S bits of config/external/icu/data/moz.build to the bottom of the file and see if that changes the order.

https://bugzilla.mozilla.org/show_bug.cgi?id=1264836

Code: Select all

--- a/config/external/icu/data/moz.build
+++ b/config/external/icu/data/moz.build
@@ -28,15 +28,6 @@ ASFLAGS += [
 ]
 LOCAL_INCLUDES += ['.']

-if CONFIG['HAVE_YASM']:
-    USE_YASM = True
-    SOURCES += ['icudata.s']
-elif CONFIG['OS_ARCH'] == 'Darwin':
-    if CONFIG['CPU_ARCH'] != 'ppc':
-        SOURCES += ['icudata_gas.S']
-elif CONFIG['GNU_AS']:
-    SOURCES += ['icudata_gas.S']
-
 if CONFIG['TARGET_ENDIANNESS'] == 'big':
     # Generate a big-endian data file for inclusion in an ICU library
     GeneratedFile(data_file['big'],
@@ -53,3 +44,12 @@ if CONFIG['MOZ_ICU_DATA_ARCHIVE']:
                       script='convert_icudata.py',
                       inputs=[data_file['little']])

+if CONFIG['HAVE_YASM']:
+    USE_YASM = True
+    SOURCES += ['icudata.s']
+elif CONFIG['OS_ARCH'] == 'Darwin':
+    if CONFIG['CPU_ARCH'] != 'ppc':
+        SOURCES += ['icudata_gas.S']
+elif CONFIG['GNU_AS']:
+    SOURCES += ['icudata_gas.S']

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 35653
Joined: 2011-08-28, 17:27
Location: Motala, SE

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by Moonchild » 2023-11-19, 00:13

Maybe I'm missing something here but that data file would be static for any particular version of ICU, so the most pragmatic solution would be to simply store the BE version of the data file in the tree, shove it to /dist when building BE, and recreate/convert it when something in ICU is updated... i.e. as a matter of course for ICU/tz updates in the source instead of at build time.
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

dbsoft
Project Contributor
Project Contributor
Posts: 419
Joined: 2020-02-21, 17:35

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by dbsoft » 2023-11-19, 00:44

Moonchild wrote:
2023-11-19, 00:13
so the most pragmatic solution would be to simply store the BE version of the data file in the tree, shove it to /dist when building BE, and recreate/convert it when something in ICU is updated...
That is an option too, adds more complexity to ICU updates, but it simplifies things for big endian builds.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 35653
Joined: 2011-08-28, 17:27
Location: Motala, SE

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by Moonchild » 2023-11-19, 01:16

Just going by the assumption that build-time can't be figured out. it's of course best to have as little complexity/manual work as possible, but if it would make the build system unreliable or too hack-y, then I'd rather go for the simple inclusion of the pre-built file, since it's platform-agnostic.
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

dbsoft
Project Contributor
Project Contributor
Posts: 419
Joined: 2020-02-21, 17:35

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by dbsoft » 2023-11-23, 08:43

Wicknix,

I tried to get the previous concept working but it required too many changes to our build system, so I rewrote it with the suggestion of Moonchild. So I need you to test the build system first and second the icudt63b.dat that I created using the script on PPC.

https://repo.palemoon.org/dbsoft/UXP/co ... c-rebased3

Thanks again,
Brian

User avatar
wicknix
Fanatic
Fanatic
Posts: 173
Joined: 2018-03-26, 04:47
Location: Wisconsin, USA

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by wicknix » 2023-11-25, 19:06

The uxp icu patch worked for ppc. Build was successful. Only small issue was my package-manifest.in. A slight adjustment later and it packaged fine. The icu.dat also worked fine. It's smaller (maybe stripped?) than the one i built and had been using, but the browser loads fine with it. :thumbup:

Cheers
uxp-icu.png
You do not have the required permissions to view the files attached to this post.
Silence is golden, but duct tape is silver...

User avatar
athenian200
Contributing developer
Contributing developer
Posts: 1537
Joined: 2018-10-28, 19:56
Location: Georgia

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by athenian200 » 2023-11-25, 19:18

wicknix wrote:
2023-11-25, 19:06
The uxp icu patch worked for ppc. Build was successful. Only small issue was my package-manifest.in. A slight adjustment later and it packaged fine. :thumbup:
Glad to hear that it's working now! It always annoyed me slightly that Mozilla did a hatchet job on the ICU build system and made it so big-endian users couldn't build their own ICU data file easily.
"The Athenians, however, represent the unity of these opposites; in them, mind or spirit has emerged from the Theban subjectivity without losing itself in the Spartan objectivity of ethical life. With the Athenians, the rights of the State and of the individual found as perfect a union as was possible at all at the level of the Greek spirit." -- Hegel's philosophy of Mind

dbsoft
Project Contributor
Project Contributor
Posts: 419
Joined: 2020-02-21, 17:35

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by dbsoft » 2023-11-25, 19:21

wicknix wrote:
2023-11-25, 19:06
The uxp icu patch worked for ppc. Build was successful. Only small issue was my package-manifest.in. A slight adjustment later and it packaged fine. The icu.dat also worked fine. It's smaller (maybe stripped?) than the one i built and had been using, but the browser loads fine with it. :thumbup:
Awesome! Yeah, I was wondering why your data file was so much bigger too, which is why I wasn't 100% sure it was going to work. You saw that patch to the package manifest I linked in an earlier post, I assume you did something like that in yours?

User avatar
wicknix
Fanatic
Fanatic
Posts: 173
Joined: 2018-03-26, 04:47
Location: Wisconsin, USA

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by wicknix » 2023-11-25, 19:38

Yep. I had just fat fingered a line in package-manifest.in. Once corrected all was good.
Silence is golden, but duct tape is silver...

User avatar
wicknix
Fanatic
Fanatic
Posts: 173
Joined: 2018-03-26, 04:47
Location: Wisconsin, USA

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by wicknix » 2023-12-03, 00:28

SeaLion 32.5.1 is now released for Mac (intel) and Linux (x86).

https://github.com/wicknix/SeaLion
Silence is golden, but duct tape is silver...

User avatar
wicknix
Fanatic
Fanatic
Posts: 173
Joined: 2018-03-26, 04:47
Location: Wisconsin, USA

Re: SeaLion (SeaMonkey / Borealis fork)

Unread post by wicknix » 2024-01-31, 04:23

SeaLion 33.0.0 is now available for Mac (intel 32 & 64 bit) and Linux (x86_64).
Silence is golden, but duct tape is silver...