update regarding my librewolf openbsd port: everything i said earlier about mozilla's allocator is a load of bollocks.
-
No! It wasn't bollocks! Or maybe it was. Idk
I re-did my port locally, only modifying www/mozilla-firefox in the least invasive way possible, without replacing/rewriting www/mozilla submodule.
Still the same malloc-related build errors on LibreWolf - BUT FIREFOX BUILDS AND WORKS FINE.
So now I'm analysing the code differences between LibreWolf 149.0.2 and FireFox 149.0.2 in unhinged detail. I now believe it may be a modification LibreWolf has done since v143, that breaks the build on OpenBSD.
I downloaded the src tarball of firefox 149.0.2 and did git init / git add -A . / git commit -m test, inside it.
then i extracted librewolf 149.0.2 tarball and moved the .git from my firefox directory into it, and did: git add -A . , then git commit -m change
now i have all the changes librewolf made, in bulk. i'm analysing those changes. i will find the smoking gun somewhere in this massive diff.
there is librewolf source.git, with its own build system and patching. but i'll check tarballs.
-
No! It wasn't bollocks! Or maybe it was. Idk
I re-did my port locally, only modifying www/mozilla-firefox in the least invasive way possible, without replacing/rewriting www/mozilla submodule.
Still the same malloc-related build errors on LibreWolf - BUT FIREFOX BUILDS AND WORKS FINE.
So now I'm analysing the code differences between LibreWolf 149.0.2 and FireFox 149.0.2 in unhinged detail. I now believe it may be a modification LibreWolf has done since v143, that breaks the build on OpenBSD.
@libreleah FVIW 144 builds here. Things start to change with 145 - had an ˋnss` error, build has been restarted.
-
I downloaded the src tarball of firefox 149.0.2 and did git init / git add -A . / git commit -m test, inside it.
then i extracted librewolf 149.0.2 tarball and moved the .git from my firefox directory into it, and did: git add -A . , then git commit -m change
now i have all the changes librewolf made, in bulk. i'm analysing those changes. i will find the smoking gun somewhere in this massive diff.
there is librewolf source.git, with its own build system and patching. but i'll check tarballs.
i may have found it
+# allow replacing malloc manually, will not affect regular systems
+# not compatible with ac_add_options --disable-jemalloc, which only works when preloading custom malloc
+ac_add_options --enable-replace-malloc
+ac_add_options --enable-jemalloclibrewolf 149 enables these options, but 143 didn't. this is from lw/mozconfig.new, which doesn't exist in firefox.
so earlier, i may have been correct, not wrong. gonna patch lw/mozconfig.new to remove this, and re-test building.
-
i may have found it
+# allow replacing malloc manually, will not affect regular systems
+# not compatible with ac_add_options --disable-jemalloc, which only works when preloading custom malloc
+ac_add_options --enable-replace-malloc
+ac_add_options --enable-jemalloclibrewolf 149 enables these options, but 143 didn't. this is from lw/mozconfig.new, which doesn't exist in firefox.
so earlier, i may have been correct, not wrong. gonna patch lw/mozconfig.new to remove this, and re-test building.
in other words: I said it was bollocks, but it probably wasn't. there *is* an incompatibility with mozilla's custom allocator, on openbsd, but www/mozilla-firefox isn't using it. www/librewolf is! because librewolf is awesome, and cares about its linux users, so wants to give them a 0.5% performance increase. yes.
yes.
yes
-
in other words: I said it was bollocks, but it probably wasn't. there *is* an incompatibility with mozilla's custom allocator, on openbsd, but www/mozilla-firefox isn't using it. www/librewolf is! because librewolf is awesome, and cares about its linux users, so wants to give them a 0.5% performance increase. yes.
yes.
yes
librewolf 143's lw/mozconfig.new doesn't have --enable-replace-malloc and --enable-jemalloc in it. but that same file *does* have these, in librewolf 149.
-
librewolf 143's lw/mozconfig.new doesn't have --enable-replace-malloc and --enable-jemalloc in it. but that same file *does* have these, in librewolf 149.
ALSO FUN FACT:
in that same file, lw/mozconfig.new, librewolf is enabling a bunch of hardening options that openbsd *also enables* on www/mozilla-firefox, but they seem to be entirely redundant on the openbsd port. i can remove most of the extra autoconf options in www/librewolf since librewolf is already applying them!
yes
-
ALSO FUN FACT:
in that same file, lw/mozconfig.new, librewolf is enabling a bunch of hardening options that openbsd *also enables* on www/mozilla-firefox, but they seem to be entirely redundant on the openbsd port. i can remove most of the extra autoconf options in www/librewolf since librewolf is already applying them!
yes
+ac_add_options --enable-application=browser
+
+ac_add_options --allow-addon-sideload
+ac_add_options --disable-crashreporter
+ac_add_options --disable-debug
+ac_add_options --disable-default-browser-agent
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+ac_add_options --disable-cargo-incremental
+ac_add_options --enable-hardening
+ac_add_options --enable-stl-hardening
+ac_add_options --enable-optimize
+ac_add_options --enable-release
+ac_add_options --enable-rust-simd -
+ac_add_options --enable-application=browser
+
+ac_add_options --allow-addon-sideload
+ac_add_options --disable-crashreporter
+ac_add_options --disable-debug
+ac_add_options --disable-default-browser-agent
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+ac_add_options --disable-cargo-incremental
+ac_add_options --enable-hardening
+ac_add_options --enable-stl-hardening
+ac_add_options --enable-optimize
+ac_add_options --enable-release
+ac_add_options --enable-rust-simdbut the actual place to patch is mozconfig (file) in the root of the extracted tarball directory
i... couldn't find this in git grep earlier, because of .gitignore. so i found it manually. librewolf's build system was still adding the malloc-replace options. it should work now.
this is literally the only problem with the librewolf port. needing to disable mozjemalloc. then it should work.
-
but the actual place to patch is mozconfig (file) in the root of the extracted tarball directory
i... couldn't find this in git grep earlier, because of .gitignore. so i found it manually. librewolf's build system was still adding the malloc-replace options. it should work now.
this is literally the only problem with the librewolf port. needing to disable mozjemalloc. then it should work.
FUN FACT: i hate mozilla.
-
FUN FACT: i hate mozilla.
absolutely bird-brained build system. gnu autotools, plus mozilla = pain
i feel like the french guy in the matrix, when he just keeps saying "ass of shit, motherfucker, piece of shit" and so on, repeatedly, in french (that's what he's saying to neo when he says he loves the french language because of how cursing with it is like, and i quote, "rubbing your ass in silk")
Nom de Dieu de putain de bordel de merde de saloperie de connard d'enculé de ta mère, firefox.
yes.
-
absolutely bird-brained build system. gnu autotools, plus mozilla = pain
i feel like the french guy in the matrix, when he just keeps saying "ass of shit, motherfucker, piece of shit" and so on, repeatedly, in french (that's what he's saying to neo when he says he loves the french language because of how cursing with it is like, and i quote, "rubbing your ass in silk")
Nom de Dieu de putain de bordel de merde de saloperie de connard d'enculé de ta mère, firefox.
yes.
Adding configure options from /home/leah/portdev/ports-pobj/librewolf-149.0.2/librewolf-149.0.2-2/mozconfig
--enable-application=browser
--allow-addon-sideload
--disable-crashreporter
--disable-debug
--disable-default-browser-agent
--disable-tests
--disable-updater
--disable-cargo-incremental
--enable-hardening
--enable-stl-hardening
--enable-optimize
--enable-release
--enable-rust-simd
--with-app-name=librewolf^ no --enable-replace-malloc or --enable-jemalloc
yay
-
Adding configure options from /home/leah/portdev/ports-pobj/librewolf-149.0.2/librewolf-149.0.2-2/mozconfig
--enable-application=browser
--allow-addon-sideload
--disable-crashreporter
--disable-debug
--disable-default-browser-agent
--disable-tests
--disable-updater
--disable-cargo-incremental
--enable-hardening
--enable-stl-hardening
--enable-optimize
--enable-release
--enable-rust-simd
--with-app-name=librewolf^ no --enable-replace-malloc or --enable-jemalloc
yay
because librewofl uses a mozconfig, the cli-based configure options in www/mozilla-firefox are useless for librewolf.
but i can't just patch mozconfig, because variables like e.g. $PREFIX are used by openbsd ports.
what i have to do then: put a custom mozconfig is files/
have e.g. @PREFIX@ in there, and sed search/replace with the variable
do this in pre-configure, in the Makefile. that's my next job.
yes. i *will* tame this ungodly build system.
-
because librewofl uses a mozconfig, the cli-based configure options in www/mozilla-firefox are useless for librewolf.
but i can't just patch mozconfig, because variables like e.g. $PREFIX are used by openbsd ports.
what i have to do then: put a custom mozconfig is files/
have e.g. @PREFIX@ in there, and sed search/replace with the variable
do this in pre-configure, in the Makefile. that's my next job.
yes. i *will* tame this ungodly build system.
there is a lot of overlap. openbsd's firefox port already adds a bunch of hardened autoconf (./configure) options, that librewolf also does. librewolf and openbsd are two peas in a pod.
it baffles me that nobody tried porting librewolf before i did. i mean, someone did, but i'm unsure if they sent it to openbsd. they simply maintained a package repo themselves, but stopped after obsd 7.1
i couldn't find their sources anymore, so i started from scratch, with my own fresh librewolf port.
-
there is a lot of overlap. openbsd's firefox port already adds a bunch of hardened autoconf (./configure) options, that librewolf also does. librewolf and openbsd are two peas in a pod.
it baffles me that nobody tried porting librewolf before i did. i mean, someone did, but i'm unsure if they sent it to openbsd. they simply maintained a package repo themselves, but stopped after obsd 7.1
i couldn't find their sources anymore, so i started from scratch, with my own fresh librewolf port.
Wow. Nice!


I do need to try one of the BSD's one day.
Which one would be better for someone unfamiliar with this OS?

-
Wow. Nice!


I do need to try one of the BSD's one day.
Which one would be better for someone unfamiliar with this OS?

@simonzerafa all the BSDs are great, but openbsd is my favourite one, because it's the easiest one to use in my opinion. they simplify a lot of of options and remove a lot of knobs, and they just make everything as generally efficient as possible. i don't want to have to think about my operating system, i just want everything important to already be done for me - especially security-related things, which openbsd excels at.
openbsd has some limitations that do not concern *me* personally. ymmv.
-
@simonzerafa all the BSDs are great, but openbsd is my favourite one, because it's the easiest one to use in my opinion. they simplify a lot of of options and remove a lot of knobs, and they just make everything as generally efficient as possible. i don't want to have to think about my operating system, i just want everything important to already be done for me - especially security-related things, which openbsd excels at.
openbsd has some limitations that do not concern *me* personally. ymmv.
-
@simonzerafa GhostBSD uses xlibre, which is maintained by someone who doesn't know how the bitshift operator works in C, or how it differs to XOR, so no, i wouldn't use ghostBSD at all.
-
because librewofl uses a mozconfig, the cli-based configure options in www/mozilla-firefox are useless for librewolf.
but i can't just patch mozconfig, because variables like e.g. $PREFIX are used by openbsd ports.
what i have to do then: put a custom mozconfig is files/
have e.g. @PREFIX@ in there, and sed search/replace with the variable
do this in pre-configure, in the Makefile. that's my next job.
yes. i *will* tame this ungodly build system.
@libreleah been there, done that. It used to be even worse! http://highlandsun.com/hyc/#mozilla
Just posting to say "I know your pain". Wrestling with disabling jemalloc so I could do proper memory leak detection, shudder.
Good luck...
-
@simonzerafa GhostBSD uses xlibre, which is maintained by someone who doesn't know how the bitshift operator works in C, or how it differs to XOR, so no, i wouldn't use ghostBSD at all.
Oh, dear. Well I did learn that in entry Computer Science classes in 1984 so seems best avoided then

-
Wow. Nice!


I do need to try one of the BSD's one day.
Which one would be better for someone unfamiliar with this OS?

@simonzerafa @libreleah it depends. I prefer OpenBSD (see eg https://blog.apnic.net/2021/10/28/openbsd-part-1-how-it-all-started/ and so on), but for someone with no unixlikes experience macOS is less intimidating and BSDish enough for a lot of purposes.
I'm not *against* FreeBSD and its derivatives but I find OpenBSD easier to deal with for *my* purposes.
And https://nxdomain.no/~peter/openbsd_installed_now_for_the_daily_tasks.html for a bit of the day to day care and feeding (also since it's near release time).