Opened 17 months ago

Last modified 10 months ago

#66425 assigned defect

libdeflate @1.15 does not build on < 10.13, unconditional use of futimens

Reported by: ballapete (Peter "Pete" Dyballa) Owned by: herbygillot (Herby Gillot)
Priority: Normal Milestone:
Component: ports Version: 2.8.0
Keywords: Cc: dankamongmen (nick black)
Port: libdeflate

Description

make[2]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build'
[ 96%] Building C object programs/CMakeFiles/libdeflate-gzip.dir/gzip.c.o
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/programs && /opt/local/bin/gcc-apple-4.2 -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200809L -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/programs -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/libdeflate-1.15 -pipe -Os -DNDEBUG -I/opt/local/include -arch ppc -mmacosx-version-min=10.4 -Wall -Wdeclaration-after-statement -Wmissing-field-initializers -Wmissing-prototypes -Wshadow -Wstrict-prototypes -Wundef -std=gnu99 -MD -MT programs/CMakeFiles/libdeflate-gzip.dir/gzip.c.o -MF CMakeFiles/libdeflate-gzip.dir/gzip.c.o.d -o CMakeFiles/libdeflate-gzip.dir/gzip.c.o -c /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/libdeflate-1.15/programs/gzip.c
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/libdeflate-1.15/programs/gzip.c: In function 'restore_timestamps':
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/libdeflate-1.15/programs/gzip.c:364: warning: implicit declaration of function 'futimens'
[100%] Linking C executable libdeflate-gzip
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/programs && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/libdeflate-gzip.dir/link.txt --verbose=ON
/opt/local/bin/gcc-apple-4.2 -pipe -Os -DNDEBUG -I/opt/local/include -arch ppc -mmacosx-version-min=10.4 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names "CMakeFiles/libdeflate-gzip.dir/gzip.c.o" -o libdeflate-gzip  libdeflate_prog_utils.a ../libdeflate.a 
Undefined symbols:
  "_futimens", referenced from:
      _restore_metadata in gzip.c.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [programs/libdeflate-gzip] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build'
make[1]: *** [programs/CMakeFiles/libdeflate-gzip.dir/all] Error 2

The declaration extern int futimens(int fd, const struct timespec _times_in[2]) can be found here, /opt/local/include/LegacySupport/sys/stat.h, and LegacySupport is used.

gzip @1.12_0 (active) requested_variants='' platform='darwin 8' archs='ppc' date='2022-04-12T01:17:21+0200' is installed, it could be built from source here, so libdeflate should build too.

Attachments (4)

main.log (52.8 KB) - added by ballapete (Peter "Pete" Dyballa) 17 months ago.
Main.log from PPC Tiger, Mac OS X 10.4.11
CMakeError.log (11.5 KB) - added by ballapete (Peter "Pete" Dyballa) 17 months ago.
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeError.log
CMakeOutput.log (24.8 KB) - added by ballapete (Peter "Pete" Dyballa) 17 months ago.
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeOutput.log
libdeflate.log (64.3 KB) - added by lukaso (Lukas Oberhuber) 10 months ago.
Build using 10.12 SDK

Download all attachments as: .zip

Change History (19)

Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

Attachment: main.log added

Main.log from PPC Tiger, Mac OS X 10.4.11

comment:1 Changed 17 months ago by jmroot (Joshua Root)

Cc: dankamongmen added; nickblack@… herby.gillot@… removed
Keywords: tiger ppc removed
Owner: set to herbygillot
Status: newassigned
Summary: libdeflate @1.15 does not build on PPC Tiger, Mac OS X 10.4.11, because ld is missing a _futimens functionlibdeflate @1.15 does not build on < 10.13, unconditional use of futimens

It fails to build on 10.12 and older because futimens was added in 10.13. Configure actually checks for it, and there is code in gzip.c to fall back to using futimes, but it doesn't seem to have its logic quite right.

comment:2 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

The tests CMake performs report:

-- Looking for futimens
-- Looking for futimens - not found
-- Looking for futimes
-- Looking for futimes - found

and …/libdeflate/work/build/CMakeFiles/CMakeError.log contains:

Determining if the futimens exist failed with the following output:
Change Dir: /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make -f Makefile cmTC_3f020/fast && /usr/bin/make  -f CMakeFiles/cmTC_3f020.dir/build.make CMakeFiles/cmTC_3f020.dir/build
Building C object CMakeFiles/cmTC_3f020.dir/CheckSymbolExists.c.o
/opt/local/bin/gcc-apple-4.2   -pipe -Os -DNDEBUG -I/opt/local/include  -arch ppc -mmacosx-version-min=10.4 -o CMakeFiles/cmTC_3f020.dir/CheckSymbolExists.c.o -c /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c: In function 'main':
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:9: error: 'futimens' undeclared (first use in this function)
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:9: error: (Each undeclared identifier is reported only once
/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:9: error: for each function it appears in.)
make[1]: *** [CMakeFiles/cmTC_3f020.dir/CheckSymbolExists.c.o] Error 1
make: *** [cmTC_3f020/fast] Error 2


File /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <fcntl.h>
#include <sys/stat.h>

int main(int argc, char** argv)
{
  (void)argv;
#ifndef futimens
  return ((int*)(&futimens))[argc];
#else
  (void)argc;
  return 0;
#endif
}

Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

Attachment: CMakeError.log added

/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeError.log

Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

Attachment: CMakeOutput.log added

/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/CMakeFiles/CMakeOutput.log

comment:3 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

Same failure on PPC Leoprad, Mac OS X 10.5.8:

/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/libdeflate-1.15/programs/gzip.c:364: warning: implicit declaration of function ‘futimens’
[100%] Linking C executable libdeflate-gzip
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build/programs && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/libdeflate-gzip.dir/link.txt --verbose=ON
/usr/bin/gcc-4.2 -pipe -Os -DNDEBUG -I/opt/local/include -arch ppc -mmacosx-version-min=10.5 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names "CMakeFiles/libdeflate-gzip.dir/gzip.c.o" -o libdeflate-gzip  -Wl,-rpath,/opt/local/lib libdeflate_prog_utils.a ../libdeflate.a 
Undefined symbols:
  "_futimens", referenced from:
      _restore_metadata in gzip.c.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [programs/libdeflate-gzip] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_libdeflate/libdeflate/work/build'

Isn't it just a simple -lMacportsLegacySupport that is missing?

comment:4 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

In another log file I saw these lines that are missing here:

MACPORTS_LEGACY_SUPPORT_CPPFLAGS='-isystem/opt/local/include/LegacySupport'
MACPORTS_LEGACY_SUPPORT_ENABLED='1'
MACPORTS_LEGACY_SUPPORT_LDFLAGS='-L/opt/local/lib -lMacportsLegacySupport'

which are probably introduced by this line in Portfile:

PortGroup               legacysupport 1.1

comment:5 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

By adding this line to Portfile I have now:

  libdeflate @1.14_0 requested_variants='' platform='darwin 9' archs='ppc' date='2022-09-18T19:17:07+0200'
  libdeflate @1.15_0 (active) requested_variants='' platform='darwin 9' archs='ppc' date='2022-12-10T10:42:04+0100'

comment:6 Changed 17 months ago by herbygillot (Herby Gillot)

In 1b0db84ddb25894c5f38ebda21221c1d08ce587c/macports-ports (master):

libdeflate: use legacysupport pg

See: #66425

comment:7 Changed 17 months ago by herbygillot (Herby Gillot)

OK, legacysupport has been added in the previously referenced commit. I think this should resolve the issue.

comment:8 Changed 17 months ago by herbygillot (Herby Gillot)

Can someone confirm that this is resolved now?

comment:9 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

After having rebuilt texlive-bin and OpenBLAS, starting yesterday, I selfupdated shortly and am upgrading. There is no update of libdeflate listed – was its Portfile changed and has it now a more up-to-date timestamp?

comment:10 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

1596 2022-12-10 11:29 seems to be a newer version.

comment:11 Changed 17 months ago by herbygillot (Herby Gillot)

OK, I bumped revision on libdeflate - it should now show up as updated.

comment:12 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

At night it built with Portfile from Saturday. Now another selfupdate is running and I'll run an upgrade.

comment:13 Changed 17 months ago by ballapete (Peter "Pete" Dyballa)

It also worked to upgrade. This is on PPC Mac OS X 10.5.8, Leopard. I'll boot into PPC Tiger, Mac OS X 10.4.11, after backup with TimeMachine. Then I'll upgrade old Tiger ports of which libdeflate will be one…

comment:14 Changed 16 months ago by ballapete (Peter "Pete" Dyballa)

It also worked to upgrade on PPC Tiger, Mac OS X 10.4.11.

comment:15 Changed 10 months ago by lukaso (Lukas Oberhuber)

Not working on 10.12 (using SDK and cross build). Log attached.

Changed 10 months ago by lukaso (Lukas Oberhuber)

Attachment: libdeflate.log added

Build using 10.12 SDK

Note: See TracTickets for help on using tickets.