Disaster strikes - SeaMonkey removed from ports tree

You're piling your work on
Tag i got that. I am building aarch64 box just for the cause. Of course I need to build the beta on my own.
Build my own 'dedicated' FreeBSD git tree for the diff.
The reason I want to start on aarch64 is we know amd64 beta builds already. jmos said so.
I don't like jails for doing stuff like this. I prefer a blank disk on new platform. Replicate on other hardware.

Looking at Makefile for prior version I am removing the BUILD_DEPENDS line for python27.

I need to change to the beta to start. What is: DISTVERSION= for the beta?
2.53.17b ??? I see it called 2.53.17b1 by jmos ?

Does the memory patch still need applying?
"throw_bad_function_call"

So as a porter not a programmer help me understand the patch here.
This looks like a difference between LIBCPP on FreeBSD and Linux (except throw ios failure in end of patch)
Why is it different? Or waddup. I see 'GCC' in name Just wondering how the software world works..
So this was compilation failure at stage that needs gcc and you had to chase down what caused it?
Is this patch/method fragile or do you expect is will remain a static need for the port?

I couldn't put something like that together so I am pondering the responsibilities.
But as the Beatles said. I get by with a little help from my friends.
 
After modifying jmos work. I have it compiling on amd64.
Remove BUILD_DEPENDS line for python27
DISTVERSION = 2.53.17b1
Delete distinfo.
Run make.
Run make makesum
Run make
 
If that works out OK I will do program testing on daily driver. Make sure up to par.
Removing py27 for building should not have much blowback right?

Quick Porting tests:
make stage
make stage-qa
make package
make install
make deinstall
make package (user)

Personally I do make then do 'add ons' like make package (for use on other machines), make reinstall for daily driver.

Port Lint does not look complicated and I will check it out.

Then play with other Arch's.
 
Phishfry:

Here you can take a look my actal state on 2.53.17b1: https://jmos.net/download/seamonkey-2.53.17b1.tar.gz

But I won't spent much time in those beta versions - far to much work has been done for nothing, as the releases differed. But I always try to get them up & running, and I'm always in touch with the upstream (hoping that the releases aren't a big surprise, and the port is quickly updated).

The "ONLY_FOR_ARCHS" thing: The upstream itself offers only amd64, so anything else isn't officially supported. That's why I decided to exclude anything else from the port. Actually I commented this setting again - maybe waiting for some feedback is a better option than simply saying "no"… But: I won't set up another machine (and update it every now & then) just for the next tests to do.

Checking the port with portlint: There are some warnings, but none error; F.e. one warning is the direct use of "autoconf2", which should be used by a variable. Spent much time in that - without success (but it's time to re-check this after several months again). And other ports do the same. Or defining a license - well, thats not so simple as saying "GPL2". Etc. And I found out that portlint isn't always wiser ;)

DISTVERSION can be deleted - that's a simple counter if you're port gets an update, but the upstream is still the same. But as the upstream changed it can simply be removed.

The memory patch: As long as it matches the source code I won't touch it. I've got two machines that build without it, so you can't be sure someone else will still need it even if you think "not needed anymore".
 
I'll comment on a few things, not to annoy you but hoping to help getting it into shape for official resurrection 😉

The "ONLY_FOR_ARCHS" thing: The upstream itself offers only amd64, so anything else isn't officially supported. That's why I decided to exclude anything else from the port. Actually I commented this setting again - maybe waiting for some feedback is a better option than simply saying "no"… But: I won't set up another machine (and update it every now & then) just for the next tests to do.
Normally, you'll restrict archs only when the port is proven to fail on some arch. For testing the build on e.g. aarch64, I could certainly help. If there are issues at runtime, eventually someone will report that on bugzilla. Then it's still time to add some arch restriction if the issue can't be resolved.

Checking the port with portlint: There are some warnings, but none error; F.e. one warning is the direct use of "autoconf2", which should be used by a variable. Spent much time in that - without success (but it's time to re-check this after several months again). And other ports do the same. Or defining a license - well, thats not so simple as saying "GPL2". Etc. And I found out that portlint isn't always wiser ;)
General school of thought: "brain > portfmt/portclippy > portlint". Meaning: they're linters, they're very useful for finding actual issues, you should always have a look at what they have to say. And if possible, getting them completely silent is perfect. BUT: There will always be situations where you won't follow their recommendations.

DISTVERSION can be deleted - that's a simple counter if you're port gets an update, but the upstream is still the same. But as the upstream changed it can simply be removed.
Without having looked at the port, just one remark: In cases where it doesn't matter technically, DISTVERSION is preferred over PORTVERSION.
 
I am still working with Aarch64 and compiling SeaMonkey on it.

My build has failed. I know jmos stated "other arch's" were not supported upstream and I appreciate that.
I don't want to swim upstream. But can anyone experienced glace at my error code and see if this is an error to overcome?

Code:
 0:49.32 In file included from Unified_cpp_gfx_skia1.cpp:137:
 0:49.33 /usr/ports/www/seamonkey/work/seamonkey-2.53.17b1/gfx/skia/skia/src/core/SkCpu.cpp:84:27: error: use of undeclared identifier 'getauxval'
 0:49.33         uint32_t hwcaps = getauxval(AT_HWCAP);
 0:49.33                           ^
 0:50.56 1 error generated.
 0:50.60 gmake[6]: *** [/usr/ports/www/seamonkey/work/seamonkey-2.53.17b1/config/rules.mk:758: Unified_cpp_gfx_skia1.o] Error 1
 0:50.60 gmake[5]: *** [/usr/ports/www/seamonkey/work/seamonkey-2.53.17b1/config/recurse.mk:74: gfx/skia/target] Error 2
 0:50.61 gmake[5]: *** Waiting for unfinished jobs....
 
Here is the full function that fails.
This seems to be a CPU related function.

/gfx/skia/skia/src/core/SkCpu.cpp
Code:
#elif defined(SK_CPU_ARM64) && __has_include(<sys/auxv.h>)
    #include <sys/auxv.h>

    static uint32_t read_cpu_features() {
        const uint32_t kHWCAP_CRC32 = (1<<7);

        uint32_t features = 0;
        uint32_t hwcaps = getauxval(AT_HWCAP);
        if (hwcaps & kHWCAP_CRC32) { features |= SkCpu::CRC32; }
        return features;
    }
error: use of undeclared identifier 'getauxval'
 
Learning experience for a newbie here:




 
told me that it is unsupported on FreeBSD 13.2
I guess that's related to your other thread?

Well, if the port works fine now and doesn't rely on EOL python any more, would you mind opening a PR to resurrect it in the official tree (and take maintainership)?
 
jmos stated to me he was not interested in becoming a port maintainer. That is why I spoke up.

It sounds like he really knows what he is doing and has eyes and ears into SeaMonkey development.

So maybe I will be public face and ask jmos when the need arises?

I don't want to butt in here. If somebody more capable is willing to claim this port please step forward.

I am not in a rush. I have the newest. I would like to correctly submit this.
 
Learning experience for a newbie here:




Well, since you've done all the legwork... Try replacing
Code:
uint32_t hwcaps = getauxval(AT_HWCAP);
With
Code:
uint32_t hwcaps = elf_aux_info(AT_HWCAP, (void *)&hwcaps, (int)sizeof(hwcaps));
And see if it compiles.
 
Looks like I got past that stage of the Mach builder.
/gfx/skia

Thanks so much.

You see interesting things compiling.
dom/media/gmp/widevine-adapter
 
Looks like I got past that stage of the Mach builder.
/gfx/skia

Thanks so much.

You see interesting things compiling.
dom/media/gmp/widevine-adapter
Awesome! If you're interested in submitting a patch upstream, a proper change would look like this:
Code:
        uint32_t features = 0;
#ifdef __FreeBSD__
        uint32_t hwcaps = elf_aux_info(AT_HWCAP, (void *)&hwcaps, (int)sizeof(hwcaps));
#else
        uint32_t hwcaps = getauxval(AT_HWCAP);
#endif
        if (hwcaps & kHWCAP_CRC32) { features |= SkCpu::CRC32; }
        return features;
And add Kyle Evans' explanation from here to the commit or pull request message:
FreeBSD can't provide a compatible getauxval() implementation. Some callers assume the presence of getauxval() means some Linux-specific AT_* values are defined.
 
jmos stated to me he was not interested in becoming a port maintainer. That is why I spoke up.

:-(
And I was so hoping that he would do this when he forked my port 2 years ago.
Back then I only had an i386 laptop with 3G ram. :) And I wanted to see seamonkey in the official ports.

But I don't see the point in this now.
I use SeaMonkey 2.53.14 because facebook doesn't work in 2.53.17.
And many others sites do not work in SeaMonkey: Firefox 60.8 is very old web engine for modern web.
I had to install Firefox and use it for some sites.

I hope the SeaMonkey team updates engine.
But hope has almost completely disappeared.

P.S.
Or maybe I'm just depressed? I live in Ukraine and Russia bombards my city Kherson every day...
 
Could someone point me a specific version of compiler to build the port safely? I was building 2.53.13 alright some time ago, but now I got

Code:
 8:55.39 /usr/include/c++/v1/string:1726:9: error: call to '__throw_out_of_range' is ambiguous
 8:55.58         _VSTD::__throw_out_of_range("basic_string");
 8:55.58         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
 8:55.58 /usr/include/c++/v1/__config:826:15: note: expanded from macro '_VSTD'
 8:55.58 #define _VSTD std

It's so frustrating to have breaking changes all the time.
 
When I volunteered to take over the port I did not realize that there are 7 supporting ports to allow SeaMonkey to build. So this will involve committing 8 ports total.

I am not a port committer and have little experience.
My plan was adopt a few orphan ports like games/xblackjack than have no upstream changes.
Ease my way into some development.

So my suggestion is to use jmos work until I get some time to understand the other 7 ports I would have to drag in.
I am having a hard time justifying these other ports as I am clueless and can't defend someone else's work.
So I find myself busy at work and not much time to devote to this. Maybe once it cools down 20 degrees here.

It's so frustrating to have breaking changes all the time.
jmos port work has been working for years.

Code:
Build Configuration
SeaMonkey 2.53.17 beta 1 - 20230801012213

The latest information on building SeaMonkey can be found at https://www.seamonkey-project.org/dev/.
Build platform
Target
x86_64-unknown-freebsd13.1
Build tools
Compiler     Version     Compiler flags
/usr/bin/clang -std=gnu99     13.0.0     -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-aliasing -ffunction-sections -fdata-sections -fno-math-errno -pipe
/usr/bin/clang++     13.0.0     -Qunused-arguments -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -I/usr/local/include -Qunused-arguments -Wall -Wbitfield-enum-conversion -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wc++1z-compat -Wc++2a-compat -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wtautological-overlap-compare -Wtautological-unsigned-enum-zero-compare -Wtautological-unsigned-zero-compare -Wno-inline-new-delete -Wno-error=pessimizing-move -Wno-error=self-move -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=return-std-move -Wno-error=atomic-alignment -Wno-error=deprecated-copy -Wno-error=unused-but-set-variable -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-unknown-warning-option -Wno-return-type-c-linkage -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pipe -O2 -O3 -fomit-frame-pointer -funwind-tables
/usr/local/bin/rustc     1.70.0    
Configure options
--enable-application=comm/suite --disable-tests --enable-release --disable-debug-symbols LLVM_CONFIG=/usr/local/bin/llvm-config13 --enable-alsa --disable-webrtc MAKE=/usr/local/bin/gmake --enable-dbus --disable-gconf --enable-install-strip --enable-official-branding --enable-strip --disable-updater --prefix=/usr/local
 
And many others sites do not work in SeaMonkey: Firefox 60.8 is very old web engine for modern web.
I had to install Firefox and use it for some sites.
I agree that SeaMonkey is using an old branch but I think it is much higher now.
Code:
User agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.17

I don't see it as SeaMonkey's problem that professional web developers break web pages on purpose.
Why is the browser blamed for broken websites?
 
Over the last years I came across others SeaMonkey port solutions. And I’ve been told that I’m doing things wrong. But others solution simply didn’t worked for me (they may work by explicit using f.e. poudriere on their environment, but not by entering make in the ports directory on a blank machine). Or included a bunch of patches. But I wanted the port to include SeaMonkey "as is", and not something heavy modified; And if the code had to be fixed I first got in touch with the upstream instead of using patches (IMO a patch should only be necessary when the upstream can’t solve it for other reasons - or is unwilling to do so; and if I’m reading the porters handbook that’s how it should be: patches only if FreeBSD specific). Or wanted a "solution" for a not existing problem added many errors (not: warnings) by checking the port with portlint. And much more…

It is hard and draining to discuss such stuff in a foreign language with people having more knowledge in languages like C/C++ than you (or: none knwoledge at all). Not being a official port maintainer gives me the freedom to say "fine, go for it - but I’m doing it that way". And a web browser contains a lot of dynamite for "know-it-all" (but: pointless discussion if others code simply does not work).

IMO Bugzilla as well as Git sucks - I don’t want to use them. But being a maintainer you’ll have to. And I don't want to be confronted with people who make claims about volunteering. Experienced too many times to do that to myself again.

A big "thank you" from me to all port maintainers!

crypt47: I’m using C++17 (and LLVM 13 – but any actual will work), but: Missing basic infos. You’re asking which compiler to use, but didn’t tell anything about what you’re actually using. There are also different ways to compile SeaMonkey – are you using the mach commands, or are you using the compiler directly? Are you using a port you found, or are you using the source archive as is? And which version are you trying to compile on which environment, which packages are installed, what have you executed to get there etc.; And: Is there a reason why you’re compiling it as I’m offering in this thread binary packages for quarterly and latest?

And yes, broken websites pop up more and more (most times it is a JS framework that excludes "unknown browsers" instead of "unknow render engines"). I’ve discussed with some creators/companies that HTML is a standard, and if you’re using a standard there is no need to exclude a browser like SeaMonkey; The last word is always "we want to give you the best possible experience (and we have no clue what our site would look like on a exotic browser, but we need to take sure that our logo looks like it should look like, and our font has to be used etc.)". But that lacks a lot of web knowledge: A user can overwrite the whole CSS, can exclude JS functionalities, can say "use my font in size XY", "don’t load images" etc. - so that is out of control anyway. Modern "web developers" are including frameworks as much as known ("maybe it can be usefull later"), can modify Worpress & co, but many of them don’t have deep knowledge of writing f.e. PHP or Javascript code by hand (in fact I’ve seen jQuery added for a simple document.getElementById() call - nothing more; discussing with people of that level I’ve been told far to often that I have no clue about how things work today). Creepy. Sad. What SeaMonkey can’t: CSS for scrollbars (IMO not a dealbreaker), gaps on gridded templates (that’s something I’m really missing - but how many web developers know about that stuff? don't recognize that in the wild beside my own work; but still: grids are generally working), the "lazy-loading" parameter for images (simply solvable), and … there’s one more, but does not occur to me right now (wasn’t a big thing, too). But there is no reason to exclude SeaMonkey - that’s always a lack of knowledge.
 
crypt47: I’m using C++17 (and LLVM 13 – but any actual will work), but: Missing basic infos. You’re asking which compiler to use, but didn’t tell anything about what you’re actually using. There are also different ways to compile SeaMonkey – are you using the mach commands, or are you using the compiler directly? Are you using a port you found, or are you using the source archive as is? And which version are you trying to compile on which environment, which packages are installed, what have you executed to get there etc.; And: Is there a reason why you’re compiling it as I’m offering in this thread binary packages for quarterly and latest?
Yes, you're right, I'm not concrete enough.:( Basically I'm just expressing frustration that I've build port a half a year ago and now there are breaking changes somewhere.:( And I even don't clearly understand what has changed.:( I've tried another compiler, same error. So I guess I have to try build the latest port, provided on your page. I just didn't found link inside the thread at the moment of writing. And I usually don't build the whole suite, only the mail client, so I have to make diff between last port with my changes and yours. That kind of unnecessary work frustrates too. But thanks that you are keeping up with support of Thunderbird. I honestly don't imaging any mail client I could migrate to.
 
It is hard and draining to discuss such stuff in a foreign language with people having more knowledge in languages like C/C++ than you (or: none knwoledge at all).

Man I am glad you brought this up.

I am amazed at the fluency of English of Europeans. I feel like an illiterate for only knowing one language.

All you people that bend over backwards to use non-native English.
THANK YOU
 
crypt47: I’m using C++17 (and LLVM 13 – but any actual will work),
Just noticed, that in the new version of your port there is a hardcode clang13. So it may be the issue after all. Otherwise what's the point to not keep up with default version.

p.s.

Phishfry, don't mention really. In Asia those of us who have education are more or less fluent too. Nice language. Nothing against it.​

 
Over the last years I came across others SeaMonkey port solutions. And I’ve been told that I’m doing things wrong.
Were you told you need to use /usr/ports/Mk/bsd.gecko.mk for SeaMonkey ?
I spent a lot of time on it (very lot).
But it turned out that it is easier without it. :)
 
Back
Top