SETENVI, make "port" and poudriere weirdness

A FreeBSD User <[email protected]>
Newsgroups gmane.os.freebsd.devel.ports
Message-ID <[email protected]>
Hello,

running FreeBSD CURRENT and FreeBSD 15-STABLE on several machines, I face some issues with the
traditional way of compiling ports and the more resource-eating way with poudriere.

Some ports when compiled via "cd /usr/ports/PORT; make all" do fail with an obscur error
reporting

: invalid option -- D

followed by a bunch of gmake options (for instance see PR 277961, x11-wm/libwraster which is
still open). Those ports fail in an "unclean natural" environment while compiling in the
artificial sterile poudriere environment. In almost all cases the problem is due to
"overlapping" environments, targeted by the introduction of SETENVI - see /usr/ports/CHANGES,
tag 20240229:.

I try to compile a well maintainded ESP32 toolchain
(https://github.com/trombik/xtensa-esp32-elf, here: devel/riscv32-esp-elf and/or devel/xtensa-esp-elf).

The non-official port compiles flawless within recent FreeBSD CURRENT and 15-STABLE with
poudriere-devel. 

It fails on all boxes running CURRENT and 15-STABLE  using "make all": It fails in those
portions of the make process while "do build" uses ${SETENV} instead of ${SETENVI}
[${WRK_ENV}]. After fixing that I'm stuck in the last step of do-build:

I do not want to go into too much details here since I want to point out that the real world
"make all" differs in a significant way from the artificial sterile way of doing poudriere
(which is to much efford on development/experimental platforms where we change options very
often).
I'd like to understand the underlying behaviour to fix the misbehaviour in "make all" - this
seems to be very hard and I fear that I miss something, some knowledge about the PORTS
framework, the role of the environment and so on.
I almost changed EVERY posiible permutation of the line (see Makefile of xtensa-esp-elf):

[...]

do-build:
ORIG:
    cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${BUILD_ENV} ./ct-ng build
VARIANT1:
	cd ${BUILD_WRKSRC} && ${SETENVI} ${MAKE_ENV} ${BUILD_ENV} ./ct-ng build
VARIANT2:
	cd ${BUILD_WRKSRC} && ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${BUILD_ENV} ./ct-ng build


The great magic here seems to be one needs to understand the difference between poudriere's
enviroenment and the environment of my account on several boxes.
My (blunt and stupid) approach is to replace on a bail out the first occurence of "${SETENV}"
with "${SETENVI} ${WRK_ENV}" as suggested in the above mentioned reference in CHANGES.

Thanks in advance

Oliver



-- 

A FreeBSD user
signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRQheDybVktG5eW/1Kxzvs8OqokrwUCaNPaGgAKCRCxzvs8Oqok
r83VAQDk7/qHd0fW0z5yFoEAUoa1vouE6S0XkRTfDzSFzy27KgEAg6oYp7AFYsQh
bBMeaPoxOFtTNwrLTI+kJDbIZajnGgk=
=fLC+
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.