Created attachment 249357 [details] Patch leading to successful build After the latest commit to the graphics/gd port I could no longer get a successful build. The build log showed the following error messages: >>>>>>>>>>>>>>>>>>>>> Making all in tests --- ./Makefile.in --- cd .. && /bin/sh /wrkdirs/usr/ports/graphics/gd/work/libgd-2.3.3/config/missing automake-1.16 --foreign tests/Makefile /wrkdirs/usr/ports/graphics/gd/work/libgd-2.3.3/config/missing: automake-1.16: not found WARNING: 'automake-1.16' is missing on your system. You should only need it if you modified 'Makefile.am' or 'configure.ac' or m4 files included by 'configure.ac'. The 'automake' program is part of the GNU Automake package: <https://www.gnu.org/software/automake> It also requires GNU Autoconf, GNU m4 and Perl in order to run: <https://www.gnu.org/software/autoconf> <https://www.gnu.org/software/m4/> <https://www.perl.org/> *** [./Makefile.in] Error code 127 make[1]: stopped in /wrkdirs/usr/ports/graphics/gd/work/libgd-2.3.3/tests 1 error make[1]: stopped in /wrkdirs/usr/ports/graphics/gd/work/libgd-2.3.3/tests make: stopped in /wrkdirs/usr/ports/graphics/gd/work/libgd-2.3.3 ===> Compilation failed unexpectedly. >>>>>>>>>>>>>>>>>>>>>>>>> Curiously enough, running `poudriere testport` finished without problems. Adding "USES+= autoreconf" to the port Makefile gives a successful build again, however due to lack of time for more thorough investigation I'm not convinced yet this is the proper way forward. It might at least be a viable workaround for the time being, though.
Please provide more details of your build Anything related in make.conf ? I can not reproduce the problem on FreeBSD-14.0 amd64 yet bulk/14amd64-default/2024-03-19_16h13m31s/logs/libgd-2.3.3_10,1.log [...] Making all in config Making all in tests =========================================================================== =======================<phase: run-depends >============================ ===== env: USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0 =========================================================================== =======================<phase: stage >============================ ===== env: NO_DEPENDS=yes USER=nobody UID=65534 GID=65534 ===> Staging for libgd-2.3.3_10,1 [...]
same error here, with poudriere bulk -j 132amd64 graphics/gd ; nothing in make.conf
Created attachment 249364 [details] build log
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=cc4f073d21d3c4553e9330899b30738d45014947 commit cc4f073d21d3c4553e9330899b30738d45014947 Author: Dirk Meyer <dinoex@FreeBSD.org> AuthorDate: 2024-03-21 11:12:06 +0000 Commit: Dirk Meyer <dinoex@FreeBSD.org> CommitDate: 2024-03-21 11:13:16 +0000 graphics/gd: fix test if "Host OSVERSION" and "Jail OSVERSION" differs PR: 277853 graphics/gd/Makefile | 1 + 1 file changed, 1 insertion(+)
No changes on FreeBSD-14 native diff /pamd14/data/logs/bulk/14amd64-default/2024-03-19_16h13m31s/logs/libgd-2.3.3_10,1.log /pamd14/data/logs/bulk/14amd64-default/2024-03-21_12h29m31s/logs/libgd-2.3.3_10,1.log | less 2c2 < build started at Tue Mar 19 17:01:37 CET 2024 --- > build started at Thu Mar 21 12:29:35 CET 2024 7,8c7,8 < Makefile datestamp: -rw-r--r-- 1 root wheel 4015 Mar 19 15:12 /usr/ports/graphics/gd/Makefile < Ports top last git commit: 80110703b9 --- > Makefile datestamp: -rw-r--r-- 1 root wheel 4038 Mar 21 11:29 /usr/ports/graphics/gd/Makefile > Ports top last git commit: cc4f073d21 10c10 < Port dir last git commit: ee1f930d04 --- > Port dir last git commit: cc4f073d21 831c831 < ===== env: 'PKG_NOTES=build_timestamp ports_top_git_hash ports_top_checkout_unclean port_git_hash port_checkout_unclean built_by' 'PKG_NOTE_build_timestamp=2024-03-19T16:01:37+0000' 'PKG_NOTE_ports_top_git_hash=80110703b9' 'PKG_NOTE_ports_top_checkout_unclean=no' 'PKG_NOTE_port_git_hash=ee1f930d04' 'PKG_NOTE_port_checkout_unclean=no' 'PKG_NOTE_built_by=poudriere-git-3.4.0' NO_DEPENDS=yes USER=nobody UID=65534 GID=65534 --- > ===== env: 'PKG_NOTES=build_timestamp ports_top_git_hash ports_top_checkout_unclean port_git_hash port_checkout_unclean built_by' 'PKG_NOTE_build_timestamp=2024-03-21T11:29:35+0000' 'PKG_NOTE_ports_top_git_hash=cc4f073d21' 'PKG_NOTE_ports_top_checkout_unclean=no' 'PKG_NOTE_port_git_hash=cc4f073d21' 'PKG_NOTE_port_checkout_unclean=no' 'PKG_NOTE_built_by=poudriere-git-3.4.0' NO_DEPENDS=yes USER=nobody UID=65534 GID=65534 837,838c837,838 < build of graphics/gd | libgd-2.3.3_10,1 ended at Tue Mar 19 17:01:58 CET 2024 < build time: 00:00:21 --- > build of graphics/gd | libgd-2.3.3_10,1 ended at Thu Mar 21 12:29:55 CET 2024 > build time: 00:00:20
(In reply to Dirk Meyer from comment #5) This seems to indicate that some file update has been detected and a target that would not normally be executed is being executed. Its target is $(srcdir)/Makefile.in in ${WRKSRC}/tests/Makefile.in. And I don't know why the sources for the target were supposed to have been updated...
For some reason, this fix does not work for me, and it still dies with: /wrkdirs/usr/ports/graphics/gd/work/libgd-2.3.3/config/missing: automake-1.16: not found My host and jail are at the same OSVERSION, though. I don't see autoreconf or automake in the build-depends list: $ make build-depends-list /share/dim/ports/ports-mgmt/pkg /share/dim/ports/devel/pkgconf /share/dim/ports/converters/libiconv /share/dim/ports/x11-fonts/fontconfig /share/dim/ports/print/freetype2 /share/dim/ports/graphics/png /share/dim/ports/graphics/tiff /share/dim/ports/graphics/webp /share/dim/ports/graphics/jpeg-turbo
As a workaround, I just added autoreconf to the USES line: diff --git a/graphics/gd/Makefile b/graphics/gd/Makefile index 915a0f860380..d8e4ddd2d940 100644 --- a/graphics/gd/Makefile +++ b/graphics/gd/Makefile @@ -14,7 +14,7 @@ LICENSE_FILE= ${WRKSRC}/COPYING CONFLICTS_INSTALL= libgd ??-libgd -USES= cpe tar:xz pkgconfig pathfix libtool:keepla shebangfix +USES= cpe tar:xz pkgconfig pathfix libtool:keepla shebangfix autoreconf SHEBANG_FILES= ${WRKSRC}/src/bdftogd GNU_CONFIGURE= yes CONFIGURE_ARGS= --enable-gd-formats This does work.
(In reply to Dimitry Andric from comment #8) What if it is made USES+=gmake instead of USES+=autoreconf ? I have always felt that the base has sometimes behaved in a way that makes me feel that the file system is slow to update. Is it the type of file system or the way it synchronizes when accessed in a multi-threaded manner...?
(In reply to Dimitry Andric from comment #8) !!!Please do respect maintainer!!!
(In reply to Dirk Meyer from comment #10) No worries Dirk, I didn't commit anything. This was locally on my ports tree. :) Then again, I think you can't reproduce the failures as other people see them? I am curious what would be different in your situation. As far as I know, the problem occurs for me even with a completely empty package set, and building graphics/gd from scratch, with all its dependencies. For some reason, the gd build decides to want to regenerate some automake Makefiles, but I never found out the root cause.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=51fb2f0d4157ec98f82f824f36dbf59957decf88 commit 51fb2f0d4157ec98f82f824f36dbf59957decf88 Author: Dirk Meyer <dinoex@FreeBSD.org> AuthorDate: 2024-03-24 14:59:02 +0000 Commit: Dirk Meyer <dinoex@FreeBSD.org> CommitDate: 2024-03-24 14:59:02 +0000 graphics/gd: fix random test failures on poudriere PR: 277853 graphics/gd/Makefile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
I switched to poudriere-devel package. Still I was unable to reproduce it on my FreeBSD-14 amd64 [...] Making all in config Making all in tests =========================================================================== =======================<phase: run-depends >============================ ===== env: USE_PACKAGE_DEPENDS_ONLY=1 USER=root UID=0 GID=0 =========================================================================== =======================<phase: stage >============================ ===== env: NO_DEPENDS=yes USER=nobody UID=65534 GID=65534 ===> Staging for libgd-2.3.3_10,1 ===> Generating temporary packing list [...]
This fixes the problem -- like Dmitry, I tried some local changed and adding `automake` to `TEST_USES` fixed the build for me. That was before this change, which also fixes the build for me.
(In reply to Adriaan de Groot from comment #14) TEST_USES was in the Makefile for a few days now, commited. Date: Thu Mar 21 12:12:06 2024 +0100 It had no effect on the cluster, there the build where still failing with the updated Makefile. Strange, that it ever worked for you.
The cause is thought to be that a patch was applied to Makemodule.am by graphics/gd/files/patch-tests_fontconfig_Makemodule.am. Therefore, it is correct that the problem is solved by always using autoreconf. However, there may be something else that still changes the timestamp of the file. Trying to use automake with version 1.16 is another problem. It is hard coded and the cause of it's execution is in ${WRKSRC}/aclocal.m4. This can be avoided by passing AUTOMAKE in CONFIGURE_ENV or something.
Only 1.16.1 is hardcoded and not found. The breaking commit was without maintainer consent: commit ee1f930d042d73061cf0874bfce40d4ad14e1d54 Author: Gleb Popov <arrowd@FreeBSD.org> Date: Sat Mar 16 04:19:42 2024 +0300 graphics/gd: Unbreak tests I see no need yet to set AUTOMAKE in CONFIGURE_ENV. # make clean patch # ug 1.16 `make -V WRKSRC` /work/usr/ports/grahics/gd/work/libgd-2.3.3/aclocal.m4 1: # generated automatically by aclocal 1.16.1 -*- Autoconf -*- 1706: [am__api_version='1.16' 1709: m4_if([$1], [1.16.1], [], 1725: [AM_AUTOMAKE_VERSION([1.16.1])dnl /work/usr/ports/grahics/gd/work/libgd-2.3.3/configure 2531: am__api_version='1.16' # make configure # ug 1.16 `make -V WRKSRC` /work/usr/ports/graphics/gd/work/libgd-2.3.3/aclocal.m4 1: # generated automatically by aclocal 1.16.5 -*- Autoconf -*- 2659: [am__api_version='1.16' 2662: m4_if([$1], [1.16.5], [], 2678: [AM_AUTOMAKE_VERSION([1.16.5])dnl /work/usr/ports/grahics/gd/work/libgd-2.3.3/configure 2889: am__api_version='1.16'
(In reply to Dirk Meyer from comment #17) It applies patch to *.am file. Whenever patch is applied to *.am file, autoreconf should always be used. And since autoreconf is already partially used, that may have been overlooked. I was the reason autoreconf was partially used. (bug 272091) I am here to see if I have made some oversight there, as autoreconf was the problem that would be the solution. I wrote comment #6 because I didn't know what the first fix would affect and solve the problem. automake-1.16 reported in comment #0 is included in */Makefile generated by make configure. am__api_version='1.16' found in comment #17 is 1.16 that be applied there. Its automake-1.16 is only used when $(srcdir)/Makefile.in is out of date. When sources are traced from all target in Makefile, Makefile.in is checked to see if it needs to be updated. ( all -> all-am -> Makefile -> $(srcdir)/Makefile.in ) $(srcdir)/Makefile.in source has been patched and it will try to update it. Since autoreconf updates Makefile.in, there is no need to run automake. To set AUTOMAKE in CONFIGURE_ENV is only preparation.