Trying to install spamassassin 4.01 from ports, choking when a dependency of a dependency of a dependency (...) eventually depends on package ninja

Short version of my problem: Trying to install spamassassin 4.0.1 from ports. It depends on re2c, which depends on cmake-core-3, which depends on jsoncpp, which depends on meson, which depends on ninja. Package ninja compile breaks, doesn't leave many clues about what the error is.

OS: FreeBSD 14.1 (fresh install, albeit immediately upgraded from FreeBSD 13.0 because that's the CD my host provided me)

What I'm doing and why I'm doing it: trying to migrate a pretty complete small business mail server from an EOL FreeBSD 13.x host, trying to install everything fresh to dump any baggage from the prior server. The planned end result stacks up to mariadb, postfix, postfix policyd SPF perl package, opendkim, opendmarc, spamassassin, dovecot, apache, php, mariadb, spamassassin, etc. Installed more or less in that order, and choked when installing spamassassin. I haven't tried the packages after spamassasssin on that list yet, but everything to that point compiled and installed fine. (Been using variations on this stack since 2008, albeit with courier back then.) Generally need to install from ports because for customization purposes.

Installed ports with git method outlined in handbook (I'm a bit of a newb at this method, used to portsnap, etc..). Port tree should be pretty fresh (e.g., installed in past 24 hours) using this command:
git clone --depth 1 https://git.freebsd.org/ports.git /usr/ports
per the handbook.

/etc/make.conf contains:
Code:
DEFAULT_VERSIONS=mysql=11.4m perl5=5.36
(I've long been using mariadb instead of mysql. Not sure I need to be explicit about a version of perl, but I have found it helped with port maintenance in the past. Also not sure it's diagnostically relevant, but including it since I did it.)

When I go to /usr/ports/mail/spamassassin and do make I get:

Code:
===>  Staging for spamassassin-4.0.1_1
===>   spamassassin-4.0.1_1 depends on package: p5-Encode-Detect>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-HTML-Parser>=3.46 - found
===>   spamassassin-4.0.1_1 depends on package: p5-HTTP-Date>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-Net-DNS>=0.63 - found
===>   spamassassin-4.0.1_1 depends on package: p5-NetAddr-IP>=4.010 - found
===>   spamassassin-4.0.1_1 depends on package: p5-Net-CIDR-Lite>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-Net-IDN-Encode>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-Net-LibIDN>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-URI>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-Class-XSAccessor>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-XString>=0 - found
===>   spamassassin-4.0.1_1 depends on package: p5-IO-Socket-INET6>=0 - found
===>   spamassassin-4.0.1_1 depends on package: re2c>=.12.0 - not found
===>   re2c-3.0 depends on executable: bison - found
===>   re2c-3.0 depends on executable: rst2man - found
===>   re2c-3.0 depends on file: /usr/local/bin/cmake - not found
===>   cmake-core-3.30.2 depends on file: /usr/local/lib/libncurses.so.6 - found
===>   cmake-core-3.30.2 depends on shared library: libexpat.so - found (/usr/local/lib/libexpat.so)
===>   cmake-core-3.30.2 depends on shared library: libjsoncpp.so - not found
===>   jsoncpp-1.9.5 depends on executable: meson - not found
===>  Staging for meson-1.5.1
===>   meson-1.5.1 depends on executable: ninja - not found
===>  Building for ninja-1.11.1,4
bootstrapping ninja...
"./src/inline.sh" kBrowsePy < ./src/browse.py > build/browse_py.h
c++ -MMD -MT build/browse.o -MF build/browse.o.d -Wall -Wextra -Wno-deprecated -Wno-missing-field-initializers -Wno-unused-parameter -fno-rtti -fno-exceptions -fvisibility=hidden -pipe '-DNINJA_PYTHON="python3.11"' -O2 -DNDEBUG -fdiagnostics-color -I/usr/local/include -DUSE_PPOLL -DNINJA_HAVE_BROWSE -I. -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing  -O2 -pipe -fstack-protector-strong -fno-strict-aliasing   -c ./src/browse.cc -o build/browse.o
when running:  c++ -MMD -MT build/browse.o -MF build/browse.o.d -Wall -Wextra -Wno-deprecated -Wno-missing-field-initializers -Wno-unused-parameter -fno-rtti -fno-exceptions -fvisibility=hidden -pipe '-DNINJA_PYTHON="python3.11"' -O2 -DNDEBUG -fdiagnostics-color -I/usr/local/include -DUSE_PPOLL -DNINJA_HAVE_BROWSE -I. -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing  -O2 -pipe -fstack-protector-strong -fno-strict-aliasing   -c ./src/browse.cc -o build/browse.o
*** Error code 1

Stop.
make[9]: stopped in /usr/ports/devel/ninja
*** Error code 1

Stop.
make[8]: stopped in /usr/ports/devel/ninja
*** Error code 1

Stop.
make[7]: stopped in /usr/ports/devel/meson
*** Error code 1

Stop.
make[6]: stopped in /usr/ports/devel/jsoncpp
*** Error code 1

Stop.
make[5]: stopped in /usr/ports/devel/cmake-core
*** Error code 1

Stop.
make[4]: stopped in /usr/ports/devel/cmake-core
*** Error code 1

Stop.
make[3]: stopped in /usr/ports/devel/re2c
*** Error code 1

Stop.
make[2]: stopped in /usr/ports/devel/re2c
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/mail/spamassassin
*** Error code 1

Stop.
make: stopped in /usr/ports/mail/spamassassin
I don't really deviate from the default options for spamassassin, but I select mysql and dmarc (I do need mysql, might get away with no dmarc - though testing it didn't seem to suggest this has to do with the problem anyway).

I tried to stick with, and should still have, the default settings for the dependencies (re2c, cmake-core-3, jsoncpp, meson, ninja) mentioned. I did make a few attempts to turn features off, but as of now everything should be default unless otherwise noted.

Not sure it matters, but Python 3.11.9 is installed I think from pkg.
 
trying to install everything fresh to dump any baggage from the prior server.
Good plan!

Try installing the package for ninja, you can install the packages for a number of build dependencies, that will save a lot of time.

pkg install -A ninja meson cmake-core
(these are installed 'automatic' so a pkg autoremove can remove them when you're done building)

Then check if there's still more missing make missing; you can also try make install-missing-packages.

Code:
     missing          Print a list of missing dependencies to be installed for
                      the port.
Code:
     install-missing-packages
                Install missing dependencies from packages instead of building
                them.
ports(7)
 
Yep, thanks, ended up doing something like that.

Ended up doing:
pkg install -A ninja meson cmake-core re2c gnutls gmp
(not sure gmp was actually necessary)

Heck of a lot of dependencies, but I guess I got it.
 
Back
Top