Created attachment 223795 [details]
poudriere build log
FreeBSD 13.0-RC5, building with poudriere for i386, building fails with this:
===> Building for e2fsprogs-libss-1.46.2
(cd /wrkdirs/usr/ports/devel/e2fsprogs-libss/work/e2fsprogs-1.46.2/lib/ss && compile_et ss_err.et && /usr/bin/sed -i.bak -f /usr/ports/devel/e2fsprogs-libss/files/fix-ss_err.h.sed ss_err.h)
/bin/sh: compile_et: not found
*** Error code 127
Full poudriere log attached.
Trying to fix this myself, I found I can build and use compile_et from inside the source tree itself, which leads to the next problem: libcom_err is required.
This is part of e2fsprogs package, which *depends* on e2fsprogs-libss.
Created attachment 223796 [details]
workaround for build error
I made it build successfully with this patch, but I think it's the wrong thing to do. libcom_err.so will still be installed by e2fsprogs and yet be linked here…
Thanks for the report.
The compile_et that I was expecting to be used is /usr/bin/compile_et, which is only built conditionally on MK_KERBEROS_SUPPORT.
Since January 2020 (0ce9d0af5b7fdfde335c753cb3310650a9d31d09) MK_KERBEROS_SUPPORT is forced off when KERBEROS itself is off, so if you are disabling either in your environment then this behavior for the port build is unsurprising.
I will take a look at what the best option is; it may well just be marking the port as not usable when /usr/bin/compile_et is not available.
Aha! Thanks for the pointer.
I had no idea compile_et is related to kerberos. Indeed, I build my base without kerberos and use MIT krb5 from ports. Will have a look whether compile_et is provided there…
Would this also solve the other problem I came across (circular dependency around libcom_err)? Or did I misunderstand something there?
(In reply to Felix Palmen from comment #3)
> I had no idea compile_et is related to kerberos. Indeed, I build my base without kerberos and use MIT krb5 from ports. Will have a look whether compile_et is provided there…
MIT krb5 does have a compile_et script in its build (bourne shell and awk), and it's in the pkg-plist for the FreeBSD port, so I think it should be suitable for this purpose.
> Would this also solve the other problem I came across (circular dependency around libcom_err)? Or did I misunderstand something there?
I think so -- despite the name being for a "common error-reporting library", there are quite a number of libcom_err implementations around, including from the major kerberos implementations.
Created attachment 224472 [details]
Add option for kerberos support from MIT krb5
Ok, this enabled me to have a better solution for my usecase. I tried to support heimdal from ports as well, but unfortunately, this doesn't install compile_et. Another option would be to also support the in-tree tools, but this would require more change, because right now, the included libcom_err is installed with sysutils/e2fsprogs, so this would create the circular dependency again…
Created attachment 225529 [details]
use local compile_et in build
If it's solely about building the e2fsprogs-libss port, we might leverage the shipped lib/et/compile_et, as proposed in this patch.
This would require tests of its users and a PORTREVISION bump if applied, which my patch does not currently do.