Bug 277853 - graphics/gd: build failure from missing automake
Summary: graphics/gd: build failure from missing automake
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Dirk Meyer
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-03-21 01:41 UTC by Martin Neubauer
Modified: 2024-03-28 03:47 UTC (History)
3 users (show)

See Also:
dinoex: maintainer-feedback+


Attachments
Patch leading to successful build (472 bytes, patch)
2024-03-21 01:41 UTC, Martin Neubauer
m.ne: maintainer-approval?
Details | Diff
build log (139.12 KB, text/plain)
2024-03-21 09:24 UTC, Mikael Urankar
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Neubauer 2024-03-21 01:41:12 UTC
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.
Comment 1 Dirk Meyer freebsd_committer freebsd_triage 2024-03-21 08:06:16 UTC
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
[...]
Comment 2 Mikael Urankar freebsd_committer freebsd_triage 2024-03-21 09:20:53 UTC
same error here, with poudriere bulk -j 132amd64 graphics/gd ; nothing in make.conf
Comment 3 Mikael Urankar freebsd_committer freebsd_triage 2024-03-21 09:24:23 UTC
Created attachment 249364 [details]
build log
Comment 4 commit-hook freebsd_committer freebsd_triage 2024-03-21 11:14:09 UTC
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(+)
Comment 5 Dirk Meyer freebsd_committer freebsd_triage 2024-03-21 11:32:25 UTC
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
Comment 6 Tatsuki Makino 2024-03-22 07:12:11 UTC
(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...
Comment 7 Dimitry Andric freebsd_committer freebsd_triage 2024-03-23 10:24:50 UTC
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
Comment 8 Dimitry Andric freebsd_committer freebsd_triage 2024-03-23 10:29:34 UTC
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.
Comment 9 Tatsuki Makino 2024-03-23 20:43:58 UTC
(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...?
Comment 10 Dirk Meyer freebsd_committer freebsd_triage 2024-03-24 14:39:20 UTC
(In reply to Dimitry Andric from comment #8)

!!!Please do respect maintainer!!!
Comment 11 Dimitry Andric freebsd_committer freebsd_triage 2024-03-24 14:51:43 UTC
(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.
Comment 12 commit-hook freebsd_committer freebsd_triage 2024-03-24 15:00:18 UTC
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(-)
Comment 13 Dirk Meyer freebsd_committer freebsd_triage 2024-03-24 15:05:49 UTC
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
[...]
Comment 14 Adriaan de Groot freebsd_committer freebsd_triage 2024-03-24 15:10:31 UTC
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.
Comment 15 Dirk Meyer freebsd_committer freebsd_triage 2024-03-24 15:40:41 UTC
(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.
Comment 16 Tatsuki Makino 2024-03-24 22:04:05 UTC
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.
Comment 17 Dirk Meyer freebsd_committer freebsd_triage 2024-03-27 15:07:03 UTC
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'
Comment 18 Tatsuki Makino 2024-03-28 03:47:37 UTC
(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.