[MacPorts] #60907: cmake @3.18.0_1 does not build on PPC Tiger, Mac OS X 10.4.11, because of 'Undefined symbols: "_lutimes"'

MacPorts noreply at macports.org
Sun Jul 26 22:53:11 UTC 2020


#60907: cmake @3.18.0_1 does not build on PPC Tiger, Mac OS X 10.4.11, because of
'Undefined symbols:   "_lutimes"'
-----------------------+--------------------
 Reporter:  ballapete  |      Owner:  (none)
     Type:  defect     |     Status:  new
 Priority:  Normal     |  Milestone:
Component:  ports      |    Version:  2.6.3
 Keywords:  tiger      |       Port:  cmake
-----------------------+--------------------
 {{{
 /opt/local/bin/g++-mp-7 -L/opt/local/lib -Wl,-headerpad_max_install_names
 -Wl,-framework -Wl,ApplicationServices
 /opt/local/lib/libMacportsLegacySupport.dylib -arch ppc -framework
 CoreFoundation -pipe -Os -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc
 -DCMAKE_BOOTSTRAP    -DCMake_HAVE_CXX_MAKE_UNIQUE=1
 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-3.18.0/Bootstrap.cmk
 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-3.18.0/Source
 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-3.18.0/Source/LexerParser
 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-3.18.0/Utilities/std
 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-3.18.0/Utilities
 cmAddCustomCommandCommand.o cmAddCustomTargetCommand.o
 cmAddDefinitionsCommand.o cmAddDependenciesCommand.o
 cmAddExecutableCommand.o cmAddLibraryCommand.o cmAddSubDirectoryCommand.o
 cmAddTestCommand.o cmArgumentParser.o cmBinUtilsLinker.o
 cmBinUtilsLinuxELFGetRuntimeDependenciesTool.o cmBinUtilsLinuxELFLinker.o
 cmBinUtilsLinuxELFObjdumpGetRuntimeDependenciesTool.o
 cmBinUtilsMacOSMachOGetRuntimeDependenciesTool.o
 cmBinUtilsMacOSMachOLinker.o
 cmBinUtilsMacOSMachOOToolGetRuntimeDependenciesTool.o
 cmBinUtilsWindowsPEGetRuntimeDependenciesTool.o
 cmBinUtilsWindowsPEDumpbinGetRuntimeDependenciesTool.o
 cmBinUtilsWindowsPELinker.o
 cmBinUtilsWindowsPEObjdumpGetRuntimeDependenciesTool.o cmBreakCommand.o
 cmBuildCommand.o cmCMakeMinimumRequired.o cmCMakePolicyCommand.o
 cmCPackPropertiesGenerator.o cmCacheManager.o cmCheckCustomOutputs.o
 cmCommand.o cmCommandArgumentParserHelper.o cmCommands.o
 cmCommonTargetGenerator.o cmComputeComponentGraph.o cmComputeLinkDepends.o
 cmComputeLinkInformation.o cmComputeTargetDepends.o cmConditionEvaluator.o
 cmConfigureFileCommand.o cmContinueCommand.o cmCoreTryCompile.o
 cmCreateTestSourceList.o cmCustomCommand.o cmCustomCommandGenerator.o
 cmCustomCommandLines.o cmDefinePropertyCommand.o cmDefinitions.o
 cmDepends.o cmDependsC.o cmDocumentationFormatter.o
 cmEnableLanguageCommand.o cmEnableTestingCommand.o cmExecProgramCommand.o
 cmExecuteProcessCommand.o cmExpandedCommandArgument.o
 cmExportBuildFileGenerator.o cmExportFileGenerator.o
 cmExportInstallFileGenerator.o cmExportSet.o
 cmExportTryCompileFileGenerator.o cmExprParserHelper.o
 cmExternalMakefileProjectGenerator.o cmFileCommand.o cmFileCopier.o
 cmFileInstaller.o cmFileTime.o cmFileTimeCache.o cmFileTimes.o
 cmFindBase.o cmFindCommon.o cmFindFileCommand.o cmFindLibraryCommand.o
 cmFindPackageCommand.o cmFindPathCommand.o cmFindProgramCommand.o
 cmForEachCommand.o cmFunctionBlocker.o cmFunctionCommand.o
 cmFSPermissions.o cmGeneratedFileStream.o cmGeneratorExpression.o
 cmGeneratorExpressionContext.o cmGeneratorExpressionDAGChecker.o
 cmGeneratorExpressionEvaluationFile.o cmGeneratorExpressionEvaluator.o
 cmGeneratorExpressionLexer.o cmGeneratorExpressionNode.o
 cmGeneratorExpressionParser.o cmGeneratorTarget.o
 cmGetCMakePropertyCommand.o cmGetDirectoryPropertyCommand.o
 cmGetFilenameComponentCommand.o cmGetPipes.o cmGetPropertyCommand.o
 cmGetSourceFilePropertyCommand.o cmGetTargetPropertyCommand.o
 cmGetTestPropertyCommand.o cmGlobalCommonGenerator.o cmGlobalGenerator.o
 cmGlobalUnixMakefileGenerator3.o cmGlobVerificationManager.o
 cmHexFileConverter.o cmIfCommand.o cmIncludeCommand.o
 cmIncludeGuardCommand.o cmIncludeDirectoryCommand.o
 cmIncludeRegularExpressionCommand.o cmInstallCommand.o
 cmInstallCommandArguments.o cmInstallDirectoryGenerator.o
 cmInstallExportGenerator.o cmInstallFilesCommand.o
 cmInstallFilesGenerator.o cmInstallGenerator.o cmInstallScriptGenerator.o
 cmInstallSubdirectoryGenerator.o cmInstallTargetGenerator.o
 cmInstallTargetsCommand.o cmInstalledFile.o cmLDConfigLDConfigTool.o
 cmLDConfigTool.o cmLinkDirectoriesCommand.o cmLinkItem.o
 cmLinkItemGraphVisitor.o cmLinkLineComputer.o cmLinkLineDeviceComputer.o
 cmListCommand.o cmListFileCache.o cmLocalCommonGenerator.o
 cmLocalGenerator.o cmLocalUnixMakefileGenerator3.o
 cmMSVC60LinkLineComputer.o cmMacroCommand.o cmMakeDirectoryCommand.o
 cmMakefile.o cmMakefileExecutableTargetGenerator.o
 cmMakefileLibraryTargetGenerator.o cmMakefileTargetGenerator.o
 cmMakefileUtilityTargetGenerator.o cmMarkAsAdvancedCommand.o
 cmMathCommand.o cmMessageCommand.o cmMessenger.o cmNewLineStyle.o
 cmOSXBundleGenerator.o cmOptionCommand.o cmOrderDirectories.o
 cmOutputConverter.o cmParseArgumentsCommand.o cmPathLabel.o cmPolicies.o
 cmProcessOutput.o cmProjectCommand.o cmPropertyDefinition.o
 cmPropertyMap.o cmReturnCommand.o cmRulePlaceholderExpander.o
 cmRuntimeDependencyArchive.o cmScriptGenerator.o cmSearchPath.o
 cmSeparateArgumentsCommand.o cmSetCommand.o
 cmSetDirectoryPropertiesCommand.o cmSetPropertyCommand.o
 cmSetSourceFilesPropertiesCommand.o cmSetTargetPropertiesCommand.o
 cmSetTestsPropertiesCommand.o cmSiteNameCommand.o cmSourceFile.o
 cmSourceFileLocation.o cmState.o cmStateDirectory.o cmStateSnapshot.o
 cmString.o cmStringAlgorithms.o cmStringReplaceHelper.o cmStringCommand.o
 cmSubcommandTable.o cmSubdirCommand.o cmSystemTools.o cmTarget.o
 cmTargetCompileDefinitionsCommand.o cmTargetCompileFeaturesCommand.o
 cmTargetCompileOptionsCommand.o cmTargetIncludeDirectoriesCommand.o
 cmTargetLinkLibrariesCommand.o cmTargetLinkOptionsCommand.o
 cmTargetPrecompileHeadersCommand.o cmTargetPropCommandBase.o
 cmTargetPropertyComputer.o cmTargetSourcesCommand.o cmTest.o
 cmTestGenerator.o cmTimestamp.o cmTryCompileCommand.o cmTryRunCommand.o
 cmUnsetCommand.o cmUVHandlePtr.o cmUVProcessChain.o cmVersion.o
 cmWhileCommand.o cmWorkingDirectory.o cmake.o cmakemain.o cmcmd.o
 string_view.o cmCommandArgumentLexer.o cmCommandArgumentParser.o
 cmExprLexer.o cmExprParser.o cmListFileLexer.o Directory.o EncodingCXX.o
 FStream.o Glob.o RegularExpression.o SystemTools.o EncodingC.o
 ProcessUNIX.o String.o System.o Terminal.o uv-src-strscpy.c.o uv-src-
 timer.c.o uv-src-uv-common.c.o uv-src-unix-cmake-bootstrap.c.o uv-src-
 unix-core.c.o uv-src-unix-fs.c.o uv-src-unix-loop.c.o uv-src-unix-loop-
 watcher.c.o uv-src-unix-no-fsevents.c.o uv-src-unix-pipe.c.o uv-src-unix-
 poll.c.o uv-src-unix-posix-hrtime.c.o uv-src-unix-posix-poll.c.o uv-src-
 unix-process.c.o uv-src-unix-signal.c.o uv-src-unix-stream.c.o  -o cmake
 Undefined symbols:
   "_lutimes", referenced from:
       _uv__fs_work in uv-src-unix-fs.c.o
 ld: symbol(s) not found
 collect2: error: ld returned 1 exit status
 gmake: *** [Makefile:2: cmake] Error 1
 }}}

 `/usr/include/sys/time.h` has:

 {{{
 int     utimes(const char *, const struct timeval *);
 }}}

 `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-v3.18.0/Bootstrap.cmk/make_bootstrap.log`
 has two different things:

 {{{
 #ifdef TEST_KWSYS_CXX_HAS_UTIMES
 #  include <sys/time.h>
 int main()
 {
   struct timeval* current_time = 0;
   return utimes("/example", current_time);
 }
 #endif

 #ifdef TEST_KWSYS_CXX_HAS_UTIMENSAT
 #  include <fcntl.h>
 #  include <sys/stat.h>
 #  if defined(__APPLE__)
 #    include <AvailabilityMacros.h>
 #    if MAC_OS_X_VERSION_MIN_REQUIRED < 101300
 #      error "utimensat not available on macOS < 10.13"
 #    endif
 #  endif
 int main()
 {
   struct timespec times[2] = { { 0, UTIME_OMIT }, { 0, UTIME_NOW } };
   return utimensat(AT_FDCWD, "/example", times, AT_SYMLINK_NOFOLLOW);
 }
 #endif
 }}}

 The C source file is
 /opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_devel_cmake/cmake/work/cmake-v3.18.0/Utilities/cmlibuv/src/unix/fs.c.
 It has:

 {{{
   215   UV_UNUSED(static struct timeval uv__fs_to_timeval(double time)) {
   216     struct timeval tv;
   217     tv.tv_sec  = time;
   218     tv.tv_usec = (uint64_t)(time * 1000000) % 1000000;
   219     return tv;
   220   }
   221
   222   static ssize_t uv__fs_futime(uv_fs_t* req) {
   223   #if defined(__linux__)
 \
   224       || defined(_AIX71)
 \
   225       || defined(__HAIKU__)
   226     /* utimesat() has nanosecond resolution but we stick to
 microseconds
   227      * for the sake of consistency with other platforms.
   228      */
   229     struct timespec ts[2];
   230     ts[0] = uv__fs_to_timespec(req->atime);
   231     ts[1] = uv__fs_to_timespec(req->mtime);
   232   #if defined(__ANDROID_API__) && __ANDROID_API__ < 21
   233     return utimensat(req->file, NULL, ts, 0);
   234   #else
   235     return futimens(req->file, ts);
   236   #endif
   237   #elif defined(__APPLE__)
 \
   238       || defined(__DragonFly__)
 \
   239       || defined(__FreeBSD__)
 \
   240       || defined(__FreeBSD_kernel__)
 \
   241       || defined(__NetBSD__)
 \
   242       || defined(__OpenBSD__)
 \
   243       || defined(__sun)
   244     struct timeval tv[2];
   245     tv[0] = uv__fs_to_timeval(req->atime);
   246     tv[1] = uv__fs_to_timeval(req->mtime);
   247   # if defined(__sun)
   248     return futimesat(req->file, NULL, tv);
   249   # else
   250     return futimes(req->file, tv);
   251   # endif
   252   #elif defined(__MVS__)
   253     attrib_t atr;
   254     memset(&atr, 0, sizeof(atr));
   255     atr.att_mtimechg = 1;
   256     atr.att_atimechg = 1;
   257     atr.att_mtime = req->mtime;
   258     atr.att_atime = req->atime;
   259     return __fchattr(req->file, &atr, sizeof(atr));
   260   #else
   261     errno = ENOSYS;
   262     return -1;
   263   #endif
   264   }
 }}}

 Said C header file `/usr/include/sys/time.h` has also:

 {{{
    75   /*
    76    * Structure returned by gettimeofday(2) system call,
    77    * and used in other calls.
    78    */
    79   #ifndef _TIMEVAL
    80   #define _TIMEVAL
    81   struct timeval {
    82           time_t          tv_sec;         /* seconds */
    83           suseconds_t     tv_usec;        /* and microseconds */
    84   };
    85   #endif  /* _TIMEVAL */
 }}}

-- 
Ticket URL: <https://trac.macports.org/ticket/60907>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list