textproc/fcitx5 fails to build with poudriere

Hi,

When I tried to build with poudriere, textproc/fcitx5 fails to build. The logs seems indicate that the wayland client isn't found. But I explicitly disable wayland for fcitx5. It's built successfully if I run `make install` directly from /usr/ports/textproc/fcitx5 on the host. It only fails in poudriere. I don't use wayland and disable it system-wide (on the host). Will anybody have any ideas where I can continue my investigation?

I attached the log. Below is the excerpt.
Code:
---Begin OPTIONS List---
===> The following configuration options are available for fcitx5-5.0.11_1:
     ENCHANT=on: Dictionary/spellchecking framework
     WAYLAND=off: Wayland (graphics) support
     X11=on: X11 (graphics) support
===> Use 'make config' to modify these settings
---End OPTIONS List---

Code:
-- Could NOT find Wayland_Client (missing: Wayland_Client_LIBRARY Wayland_Client_INCLUDE_DIR) (found version "")
-- Could NOT find Wayland_Egl (missing: Wayland_Egl_LIBRARY Wayland_Egl_INCLUDE_DIR Wayland_Client_FOUND) (found version "")
CMake Error at /usr/local/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Wayland (missing: Wayland_LIBRARIES Client Egl)
Call Stack (most recent call first):
  /usr/local/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/ECM/find-modules/FindWayland.cmake:110 (find_package_handle_standard_args)
  CMakeLists.txt:157 (find_package)


-- Configuring incomplete, errors occurred!
See also "/portworkdir/usr/ports/textproc/fcitx5/work/.build/CMakeFiles/CMakeOutput.log".
See also "/portworkdir/usr/ports/textproc/fcitx5/work/.build/CMakeFiles/CMakeError.log".
*** Error code 1

Stop.
make: stopped in /usr/ports/textproc/fcitx5
=>> Cleaning up wrkdir
===>  Cleaning for fcitx5-5.0.11_1
build of textproc/fcitx5 | fcitx5-5.0.11_1 ended at Thu Oct 20 08:46:38 PDT 2022
build time: 00:03:15
!!! build failure encountered !!!

I follow https://docs.freebsd.org/en/books/handbook/ports/#ports-poudriere to set up my poudriere environment except I'm using the same port in /usr/ports

Code:
$ poudriere jails -l
131amd64 13.1-RELEASE-p2 amd64 http   2022-09-22 13:48:44 /home/poudriere/jails/131amd64
$ poudriere ports -l
default   null   2022-09-23 16:26:57 /usr/ports

I'm building it with
Code:
poudriere bulk -j 131amd64 -f /home/poudriere/packages.lst

I also attach the make.conf that's used in my host and also poudriere.

I still don't know why in poudriere it's looking for wayland. Can anybody shed some light on it?

Thanks,
 

Attachments

Code:
WITHOUT_X=YES
WITH_X=NO
This doesn't do what you think it does. The value of those WITH_* and WITHOUT_* variables is irrelevant. It's the existence of WITH_* or WITHOUT_ * that defines if an option is included or not. That said, you should really use OPTIONS_UNSET or OPTIONS_SET instead, WITH_ and WITHOUT_ was the 'old' way of setting options, it still works but you should move away from it.

I would also be more careful about globally setting or unsetting options. You can set options per port:
Code:
# OPTIONS_SET                   - List of options to enable for all ports.
# OPTIONS_UNSET                 - List of options to disable for all ports.
# ${OPTIONS_NAME}_SET           - List of options to enable for a specific port.
# ${OPTIONS_NAME}_UNSET         - List of options to disable for a specific port.

Also note that any options you may have set with poudriere-options(8) or make config will overrule the OPTIONS_SET/UNSET and ${OPTIONS_NAME}_SET/UNSET. That's why a _FORCE exist:
Code:
 # OPTIONS_SET_FORCE             - List of options to enable for all ports.
# OPTIONS_UNSET_FORCE           - List of options to disable for all ports.
# ${OPTIONS_NAME}_SET_FORCE     - List of options to enable for a specific port.
# ${OPTIONS_NAME}_UNSET_FORCE
#                               - List of options to disable for a specific port.
Code:
# These variables can be used in make.conf to configure options.  They are
# processed in the order listed below, i.e. later variables override the effects
# of previous variables.  Options saved using the options dialog are processed
# right before OPTIONS_SET_FORCE.  When building a port a dialog to configure
# options will only appear if there are new options, i.e. options which have not
# been configured before either using the option dialog in a previous build or
# using the variables below.  You can force the dialog to appear by running
# "make config".
See /usr/ports/Mk/bsd.options.mk

I don't use wayland and disable it system-wide (on the host).
Tried that too. But some ports just refuse to build correctly if it's switched off. But first make sure that setting isn't being overruled. Then open a PR if it still fails to build with the option turned off.
 
Thanks for your reply SirDice

> But first make sure that setting isn't being overruled.

How do I check if what the final options/settings are for the build? I check the build log and see that WAYLAND is set to off. If that's not suffice to say that WAYLAND is off, how can I tell?

If I set WAYLAND to on in textproc/fctix5's options, it builds. But I don't want to pull in wayland since I'm only using x11.

I have to correct myself in my original post. I said that it's built successfully on my host using `make install` from the directory /usr/ports/textproc/fcitx5. Actually, it's not always. there is the same error about using the Wayland sometimes. But sometimes it's built successfully.
 
Actually, it's not always. there is the same error about using the Wayland sometimes. But sometimes it's built successfully.
Sometimes configure options are just ignored if the ./configure scripts detects something is installed. You can 'disable' that option all you want but the ./configure script will just enable it when it detects it's installed. That's one of the reasons why Poudriere builds everything in 'clean' jail.
 
Back
Top