Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#57134 closed defect (fixed)

autogen @5.18.14: build fails on 10.13 due to error: no member named 'st_mtim' in 'struct stat'

Reported by: kencu (Ken) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ryandesign (Ryan Carsten Schmidt)
Port: autogen

Description

Looks like the recent update to 5.18.14 is the cause for this, as nothing else seems to have changed in the build of autogen.

<https://build.macports.org/builders/ports-10.13_x86_64-builder/builds/34707/steps/install-port/logs/stdio>

5.18.16 is out, but also fails in the same fashion.

rolling back to 5.18.12 still works fine, and I see that's where homebrew is pegged at present.

Attachments (1)

patch-autogen-mktemp.diff (5.6 KB) - added by kencu (Ken) 6 years ago.
patch to replace mktemp with gmktemp

Download all attachments as: .zip

Change History (7)

comment:1 Changed 6 years ago by kencu (Ken)

In testing autogen 5.18.16, I found one file, config/mk-shdefs, needs some minor editing to get through the initial configuration. It seems the mktemp command on macOS does not accept the --suffix flag.

comment:2 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

As I mentioned in the PR, 5.18.12 didn't build on High Sierra either, which is why I merged it without resolving this issue. I did report the issue to the developer, who suggested running ./configure with ac_cv_func_utimensat=no as a workaround; I have not tested that yet.

comment:3 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Owner: set to ryandesign
Resolution: fixed
Status: newclosed

In 8df139750e2bbf43c2309f62564bf8a2e5f60d14/macports-ports (master):

autogen: Fix build on High Sierra and later

Closes: #57134

comment:4 in reply to:  1 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to kencu:

In testing autogen 5.18.16, I found one file, config/mk-shdefs, needs some minor editing to get through the initial configuration. It seems the mktemp command on macOS does not accept the --suffix flag.

I have reported this to the developers. If you have a suggested fix, you could mention it to them there.

comment:5 Changed 6 years ago by kencu (Ken)

Thanks for the background. Something must have changed with 5.18.12 on High Sierra, because it builds now. But anyway, that fix for 5.18.14 is just what we needed, and now that works great. Seems I have seen that fix before, but just didn't recall it yesterday...

for 5.18.16 the guile patch doesn't apply, so I disabled it for now.

re: the mktemp issue, I see we already have gmktemp in coreutils, and this port already depends on coreutils, so the trick is to force it to use gmktemp instead of mktemp. Unfortunately it looks like there is no way to do that in a simple configure force, as mktemp is not tested the way other applications like SED are tested, and you can't just override it. So I just batch replaced them all in the port.

Sadly, even after that, 5.18.16 fails to build:

make[2]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_autogen/autogen/work/autogen-5.18.16/columns'
top_builddir=.. \
	/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_autogen/autogen/work/autogen-5.18.16/agen5/autogen -L../autoopts/tpl -L../autoopts/tpl -MFstamp-agtexi -Tagtexi-cmd.tpl -DLEVEL=section --timeout=`expr 16 '*' 3` ./opts.def
Could not decipher Guile version: n

so autogen 5.18.16 vs guile will need some more sorting out.

I'll attach the patch I used to replace mktemp with gmktemp pending some upstream addressing of the issue, if they do.

Changed 6 years ago by kencu (Ken)

Attachment: patch-autogen-mktemp.diff added

patch to replace mktemp with gmktemp

comment:6 in reply to:  5 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to kencu:

for 5.18.16 the guile patch doesn't apply, so I disabled it for now.

5.18.16 includes guile 2.2 support so our patch and our notes are no longer needed.

re: the mktemp issue, I see we already have gmktemp in coreutils, and this port already depends on coreutils, so the trick is to force it to use gmktemp instead of mktemp. Unfortunately it looks like there is no way to do that in a simple configure force, as mktemp is not tested the way other applications like SED are tested, and you can't just override it. So I just batch replaced them all in the port.

Oh, I didn't notice that the port already depended on coreutils. In that case, we can certainly use gmktemp until upstream sorts out their portability issues. It should only be necessary to patch those invocations of mktemp that use --suffix.

Sadly, even after that, 5.18.16 fails to build:

make[2]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_autogen/autogen/work/autogen-5.18.16/columns'
top_builddir=.. \
	/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_autogen/autogen/work/autogen-5.18.16/agen5/autogen -L../autoopts/tpl -L../autoopts/tpl -MFstamp-agtexi -Tagtexi-cmd.tpl -DLEVEL=section --timeout=`expr 16 '*' 3` ./opts.def
Could not decipher Guile version: n

I don't see that problem. Do you have guile @2.2.4_0 installed? Try this PR?

Note: See TracTickets for help on using tickets.