bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with directory trees "confdir-14B---" and "confdir3"


From: Peter Dyballa
Subject: Re: Problems with directory trees "confdir-14B---" and "confdir3"
Date: Sun, 9 Jan 2022 01:05:39 +0100

Am 08.01.2022 um 21:27 schrieb Paul Eggert:

whereas ./configure's test program does not work?


On PPC Leopard (Mac OS X 10.5.8) I started to build findutils 4.7.0 in MacPorts again. In GNU Emacs I had one window showing the build directory and one *compilation* buffer. Approximately eight minutes after the build started (MacPorts needed the first two minutes to set itself up) were the directories confdir-14B--- and confdir3 created. Approximately thirteen minutes later the build process stopped because configure failed to remove the two directories:

        config.status: executing po-directories commands
        config.status: creating po/POTFILES
        config.status: creating po/Makefile
rm: confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3: No space left on device rm: confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/ confdir3/confdir3/confdir3: Directory not empty

92 shorter becoming lines configure tried to remove the other tree (I am including the last two lines from confdir-14B---):

        rm: confdir3/confdir3: Directory not empty
        rm: confdir3: Directory not empty
rm: confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---: No space left on device rm: confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---: Directory not empty

55 shorter becoming lines later (you can imagine the last two) this text from MacPorts follows in *compilation* buffer:

        DEBUG: Executing portconfigure::configure_finish
Error: Failed to configure findutils: /opt/local/var/macports/build/ _opt_local_var_macports_sources_nue .de .rsync.macports.org_macports_release_tarballs_ports_sysutils_findutils/ findutils/work/findutils-4.7.0/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---: file name too long
        DEBUG: Error code: POSIX ENAMETOOLONG {file name too long}
DEBUG: Backtrace: /opt/local/var/macports/build/ _opt_local_var_macports_sources_nue .de .rsync.macports.org_macports_release_tarballs_ports_sysutils_findutils/ findutils/work/findutils-4.7.0/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---/confdir-14B---/ confdir-14B---/confdir-14B---/confdir-14B---: file name too long
            while executing
        "fs-traverse -tails file [list ${workpath}] {
if {[file tail $file] in [list config.log CMakeError.log meson-log.txt] && [file isfile [file joi..." (procedure "portconfigure::check_implicit_function_declarations" line 7)
            invoked from within
        "portconfigure::check_implicit_function_declarations"
            (procedure "portconfigure::configure_finish" line 5)
            invoked from within
        "$postrun $targetname"
Error: See /opt/local/var/macports/logs/ _opt_local_var_macports_sources_nue .de .rsync.macports.org_macports_release_tarballs_ports_sysutils_findutils/ findutils/main.log for details.

Config.log has nothing logged about these two failures. It has this:

configure:25854: checking whether getcwd handles long file names properly configure:26085: /usr/bin/gcc-4.2 -std=gnu99 -o conftest -pipe -Os - arch ppc -I/opt/local/include -L/opt/local/lib -Wl,- headerpad_max_install_names -arch ppc conftest.c >&5
        configure:26085: $? = 0
        configure:26085: ./conftest
        configure:26085: $? = 32
        configure: program exited with status 32
        configure: failed program was:
        | /* confdefs.h */
        | #define PACKAGE_NAME "GNU findutils"
        | #define PACKAGE_TARNAME "findutils"
        | #define PACKAGE_VERSION "4.7.0"
        | #define PACKAGE_STRING "GNU findutils 4.7.0"
        | #define PACKAGE_BUGREPORT "bug-findutils@gnu.org"
        | #define PACKAGE_URL "http://www.gnu.org/software/findutils/";
| #define PACKAGE_BUGREPORT_URL "https://savannah.gnu.org/bugs/?group=findutils "
        | #define PACKAGE "findutils"
        | #define VERSION "4.7.0"
        | #define LEAF_OPTIMISATION 1
        | #define STDC_HEADERS 1
        | #define HAVE_SYS_TYPES_H 1
        | #define HAVE_SYS_STAT_H 1
        | #define HAVE_STDLIB_H 1
        | #define HAVE_STRING_H 1
        | #define HAVE_MEMORY_H 1
        | #define HAVE_STRINGS_H 1
        | #define HAVE_INTTYPES_H 1
        | #define HAVE_STDINT_H 1
        | #define HAVE_UNISTD_H 1
        | #define __EXTENSIONS__ 1
        | #define _ALL_SOURCE 1
        | #define _DARWIN_C_SOURCE 1
        | #define _GNU_SOURCE 1
        | #define _NETBSD_SOURCE 1
        | #define _OPENBSD_SOURCE 1
        | #define _POSIX_PTHREAD_SEMANTICS 1
        | #define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
        | #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
        | #define __STDC_WANT_IEC_60559_DFP_EXT__ 1
        | #define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
        | #define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
        | #define __STDC_WANT_LIB_EXT2__ 1
        | #define __STDC_WANT_MATH_SPEC_FUNCS__ 1
        | #define _TANDEM_SOURCE 1
        | #define _HPUX_ALT_XOPEN_SOCKET_API 1
        | #define HAVE_FSEEKO 1
        | #define _DARWIN_USE_64_BIT_INODE 1
        | #define _DARWIN_USE_64_BIT_INODE 1
        | #define HAVE_ALLOCA_H 1
        | #define HAVE_ALLOCA 1
        | #define HAVE_BTOWC 1
        | #define HAVE_REALPATH 1
        | #define HAVE_FCHDIR 1
        | #define HAVE_FCNTL 1
        | #define HAVE_SYMLINK 1
        | #define HAVE_FNMATCH 1
        | #define HAVE_ISBLANK 1
        | #define HAVE_ISWCTYPE 1
        | #define HAVE_MBSRTOWCS 1
        | #define HAVE_WMEMCHR 1
        | #define HAVE_WMEMCPY 1
        | #define HAVE_FPURGE 1
        | #define HAVE_FSTATFS 1
        | #define HAVE_GETDTABLESIZE 1
        | #define HAVE_GETPROGNAME 1
        | #define HAVE_GETTIMEOFDAY 1
        | #define HAVE_ISWCNTRL 1
        | #define HAVE_ISWBLANK 1
        | #define HAVE_LSTAT 1
        | #define HAVE_MBSINIT 1
        | #define HAVE_MBRTOWC 1
        | #define HAVE_ISASCII 1
        | #define HAVE_MPROTECT 1
        | #define HAVE_TZSET 1
        | #define HAVE_NL_LANGINFO 1
        | #define HAVE_STRERROR_R 1
        | #define HAVE_READLINK 1
        | #define HAVE_FPATHCONF 1
        | #define HAVE_SETENV 1
        | #define HAVE_SNPRINTF 1
        | #define HAVE_STRDUP 1
        | #define HAVE_CATGETS 1
        | #define HAVE_STRTOUMAX 1
        | #define HAVE_LOCALTIME_R 1
        | #define HAVE_TIMEGM 1
        | #define HAVE_PIPE 1
        | #define HAVE_WCRTOMB 1
        | #define HAVE_WCWIDTH 1
        | #define HAVE_FTRUNCATE 1
        | #define HAVE_NEWLOCALE 1
        | #define HAVE_USELOCALE 1
        | #define HAVE_DUPLOCALE 1
        | #define HAVE_FREELOCALE 1
        | #define HAVE_PTHREAD_SIGMASK 1
        | #define HAVE_SIGACTION 1
        | #define HAVE_SIGALTSTACK 1
        | #define HAVE_SIGINTERRUPT 1
        | #define HAVE_SLEEP 1
        | #define HAVE_SHUTDOWN 1
        | #define HAVE_USLEEP 1
        | #define HAVE_WCTOB 1
        | #define HAVE_LANGINFO_CODESET 1
        | #define HAVE_UNISTD_H 1
        | #define HAVE_SYS_PARAM_H 1
        | #define HAVE_SYS_SOCKET_H 1
        | #define HAVE_DIRENT_H 1
        | #define HAVE_FNMATCH_H 1
        | #define HAVE_WCTYPE_H 1
        | #define HAVE_SYS_STAT_H 1
        | #define HAVE_NETDB_H 1
        | #define HAVE_GETOPT_H 1
        | #define HAVE_SYS_CDEFS_H 1
        | #define HAVE_SYS_TIME_H 1
        | #define HAVE_LIMITS_H 1
        | #define HAVE_WCHAR_H 1
        | #define HAVE_STDINT_H 1
        | #define HAVE_INTTYPES_H 1
        | #define HAVE_LANGINFO_H 1
        | #define HAVE_XLOCALE_H 1
        | #define HAVE_MATH_H 1
        | #define HAVE_SYS_MMAN_H 1
        | #define HAVE_SYS_STATVFS_H 1
        | #define HAVE_SYS_TYPES_H 1
        | #define HAVE_STRINGS_H 1
        | #define HAVE_SYS_UIO_H 1
        | #define HAVE_SYS_UTSNAME_H 1
        | #define HAVE_SYS_WAIT_H 1
        | #define HAVE_ARPA_INET_H 1
        | #define HAVE_NETINET_IN_H 1
        | #define HAVE_SEMAPHORE_H 1
        | #define HAVE_SYS_SELECT_H 1
        | #define HAVE_SYS_IOCTL_H 1
        | #define HAVE_DECL_STRERROR_R 1
        | #define HAVE_STRERROR_R 1
        | #define GETGROUPS_T gid_t
        | #define HAVE_DECL_FCHDIR 1
        | #define HAVE_WORKING_O_NOATIME 0
        | #define HAVE_WORKING_O_NOFOLLOW 1
        | #define PROMOTED_MODE_T int
        | #define HAVE_DECL_STRMODE 1
        | #define HAVE_MBSTATE_T 1
        | #define _USE_STD_STAT 1
        | #define HAVE_DECL_FSEEKO 1
        | #define FUNC_FFLUSH_STDIN 0
        | #define HAVE_DECL_FTELLO 1
        | #define HAVE_DECL_GETCWD 1
        | #define HAVE_DECL_GETDELIM 0
        | #define HAVE_DECL_GETDTABLESIZE 1
        | #define HAVE_DECL_GETLINE 0
        | #define HAVE_GETOPT_H 1
        | #define HAVE_GETOPT_LONG_ONLY 1
        | #define restrict /**/
        | #define HAVE_WINT_T 1
        | #define HAVE_UNSIGNED_LONG_LONG_INT 1
        | #define HAVE_LONG_LONG_INT 1
        | #define BITSIZEOF_PTRDIFF_T 32
        | #define BITSIZEOF_SIZE_T 32
        | #define BITSIZEOF_SIG_ATOMIC_T 32
        | #define BITSIZEOF_WCHAR_T 32
        | #define BITSIZEOF_WINT_T 32
        | #define HAVE_SIGNED_SIG_ATOMIC_T 1
        | #define HAVE_SIGNED_WCHAR_T 1
        | #define HAVE_SIGNED_WINT_T 1
        | #define PTRDIFF_T_SUFFIX
        | #define SIZE_T_SUFFIX ul
        | #define SIG_ATOMIC_T_SUFFIX
        | #define WCHAR_T_SUFFIX
        | #define WINT_T_SUFFIX
        | #define HAVE_INTTYPES_H 1
        | #define WORDS_BIGENDIAN 1
        | #define DBL_EXPBIT0_WORD 0
        | #define DBL_EXPBIT0_BIT 20
        | #define FLT_EXPBIT0_WORD 0
        | #define FLT_EXPBIT0_BIT 23
        | #define HAVE_TOWLOWER 1
        | #define HAVE_WCHAR_T 1
        | #define USE_POSIX_THREADS 1
        | #define HAVE_STDLIB_H 1
        | #define MALLOC_0_IS_NONNULL 1
        | #define MAP_ANONYMOUS MAP_ANON
        | #define HAVE_MAP_ANONYMOUS 1
        | #define HAVE_DECL_MEMRCHR 0
        | #define HAVE_MINMAX_IN_SYS_PARAM_H 1
        | #define TIME_T_IS_SIGNED 1
        | #define HAVE_DECL_ALARM 1
        | #define HAVE_DECL_TRUNC 1
        | #define HAVE_STRUCT_TM_TM_ZONE 1
        | #define HAVE_TM_ZONE 1
        | #define HAVE_TM_GMTOFF 1
        | #define HAVE__BOOL 1
        | #define HAVE_COMPOUND_LITERALS 1
        | #define REPLACE_STRERROR_0 1
        | #define HAVE_DECL_STRERROR_R 1
        | #define HAVE_LONG_FILE_NAMES 1
        | #define HAVE_DECL_SETENV 1
        | #define HAVE_SEARCH_H 1
        | #define HAVE_TSEARCH 1
        | #define HAVE_DECL_SNPRINTF 1
        | #define HAVE_STRCASESTR 1
        | #define HAVE_DECL_STRDUP 1
        | #define HAVE_DECL_STRNDUP 0
        | #define HAVE_DECL_STRNLEN 0
        | #define HAVE_DECL_STRTOUMAX 1
        | #define HAVE_SHUTDOWN 1
        | #define HAVE_STRUCT_SOCKADDR_STORAGE 1
        | #define HAVE_SA_FAMILY_T 1
        | #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
        | #define HAVE_DECL_UNSETENV 1
        | #define HAVE_INTTYPES_H_WITH_UINTMAX 1
        | #define HAVE_STDINT_H_WITH_UINTMAX 1
        | #define HAVE_INTMAX_T 1
        | #define HAVE_SNPRINTF 1
        | #define HAVE_WCSLEN 1
        | #define HAVE_MBRTOWC 1
        | #define HAVE_WCRTOMB 1
        | #define HAVE_DECL__SNPRINTF 0
        | #define HAVE_SNPRINTF_RETVAL_C99 1
        | #define HAVE_IPV4 1
        | #define HAVE_IPV6 1
        | #define HAVE_LC_MESSAGES 1
        | #define HAVE_WORKING_USELOCALE 1
        | #define HAVE_CFPREFERENCESCOPYAPPVALUE 1
        | #define HAVE_CFLOCALECOPYCURRENT 1
        | #define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1
        | #define HAVE_SIGSET_T 1
        | #define HAVE_ALLOCA 1
        | #define GNULIB_AREADLINKAT 1
        | #define GNULIB_TEST_BTOWC 1
        | #define HAVE___BUILTIN_EXPECT 1
        | #define GNULIB_CANONICALIZE 1
        | #define GNULIB_TEST_CANONICALIZE 1
        | #define GNULIB_TEST_CANONICALIZE_FILE_NAME 1
        | #define GNULIB_TEST_CHDIR 1
        | #define GNULIB_TEST_CLOEXEC 1
        | #define GNULIB_TEST_CLOSE 1
        | #define GNULIB_CLOSE_STREAM 1
        | #define HAVE_CLOSEDIR 1
        | #define GNULIB_TEST_CLOSEDIR 1
        | #define D_INO_IN_DIRENT 1
        | #define HAVE_STRUCT_DIRENT_D_TYPE 1
        | #define GNULIB_DIRENT_SAFER 1
        | #define HAVE_DECL_DIRFD 1
        | #define GNULIB_TEST_DIRFD 1
        | #define GNULIB_DIRNAME 1
        | #define GNULIB_TEST_DUP 1
        | #define HAVE_DUP2 1
        | #define GNULIB_TEST_DUP2 1
        | #define GNULIB_TEST_ENVIRON 1
        | #define HAVE_LIBGEN_H 1
        | #define HAVE_GETGROUPS 1
        | #define GNULIB_TEST_EUIDACCESS 1
        | #define HAVE_ACCESS 1
        | #define GNULIB_FACCESSAT 1
        | #define GNULIB_TEST_FACCESSAT 1
        | #define GNULIB_TEST_FCHDIR 1
        | #define GNULIB_TEST_FCNTL 1
        | #define GNULIB_FCNTL_SAFER 1
        | #define GNULIB_FD_SAFER_FLAG 1
        | #define HAVE_DECL_FDOPENDIR 0
        | #define GNULIB_TEST_FDOPENDIR 1
        | #define GNULIB_FDOPENDIR 1
        | #define FUNC_FFLUSH_STDIN 0
        | #define GNULIB_FFLUSH 1
        | #define GNULIB_TEST_FFLUSH 1
        | #define HAVE_STRUCT_STAT_ST_BLOCKS 1
        | #define HAVE_ST_BLOCKS 1
        | #define FLEXIBLE_ARRAY_MEMBER /**/
        | #define HAVE_DECL_ISBLANK 1
        | #define GNULIB_TEST_FNMATCH 1
        | #define HAVE_DECL_ISBLANK 1
        | #define GNULIB_FNMATCH_GNU 1
        | #define GNULIB_TEST_FOPEN 1
        | #define GNULIB_FOPEN_SAFER 1
        | #define HAVE_DECL_FPURGE 1
        | #define GNULIB_TEST_FPURGE 1
        | #define GNULIB_TEST_FSEEK 1
        | #define FUNC_FFLUSH_STDIN 0
        | #define GNULIB_TEST_FSEEKO 1
        | #define GNULIB_TEST_FSTAT 1
        | #define GNULIB_TEST_FSTATAT 1
        | #define GNULIB_TEST_FTELL 1
        | #define GNULIB_TEST_FTELLO 1
        | #define fts_open rpl_fts_open
        | #define fts_close rpl_fts_close
        | #define fts_read rpl_fts_read
        | #define fts_set rpl_fts_set
        | #define fts_children rpl_fts_children
        | #define fts_cross_check rpl_fts_cross_check
        | /* end confdefs.h.  */
        |
        | #include <errno.h>
        | #include <stdlib.h>
        | #if HAVE_UNISTD_H
        | # include <unistd.h>
        | #else
        | # include <direct.h>
        | #endif
        | #include <string.h>
        | #include <limits.h>
        | #include <sys/stat.h>
        | #include <sys/types.h>
        | #include <fcntl.h>
        |
        |
        | /* Arrange to define PATH_MAX, like "pathmax.h" does. */
        | #if HAVE_UNISTD_H
        | # include <unistd.h>
        | #endif
        | #include <limits.h>
| #if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
        | # include <sys/param.h>
        | #endif
        | #if !defined PATH_MAX && defined MAXPATHLEN
        | # define PATH_MAX MAXPATHLEN
        | #endif
        | #ifdef __hpux
        | # undef PATH_MAX
        | # define PATH_MAX 1024
        | #endif
        | #if defined _WIN32 && ! defined __CYGWIN__
        | # undef PATH_MAX
        | # define PATH_MAX 260
        | #endif
        |
        |
        | #ifndef AT_FDCWD
        | # define AT_FDCWD 0
        | #endif
        | #ifdef ENAMETOOLONG
        | # define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG)
        | #else
        | # define is_ENAMETOOLONG(x) 0
        | #endif
        |
        | /* Use the getcwd function, not any macro.  */
        | #undef getcwd
        |
        | /* Don't get link errors because mkdir is redefined to rpl_mkdir.  */
        | #undef mkdir
        |
        | #ifndef S_IRWXU
        | # define S_IRWXU 0700
        | #endif
        |
        | /* The length of this name must be 8.  */
        | #define DIR_NAME "confdir3"
        | #define DIR_NAME_LEN 8
        | #define DIR_NAME_SIZE (DIR_NAME_LEN + 1)
        |
        | /* The length of "../".  */
        | #define DOTDOTSLASH_LEN 3
        |
| /* Leftover bytes in the buffer, to work around library or OS bugs. */
        | #define BUF_SLOP 20
        |
        | int
        | main ()
        | {
        | #ifndef PATH_MAX
        |   /* The Hurd doesn't define this, so getcwd can't exhibit the bug --
| at least not on a local file system. And if we were to start worrying | about remote file systems, we'd have to enable the wrapper function | all of the time, just to be safe. That's not worth the cost. */
        |   exit (0);
| #elif ((INT_MAX / (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1) - DIR_NAME_SIZE - BUF_SLOP) <= PATH_MAX)
        |   /* FIXME: Assuming there's a system for which this is true,
        |      this should be done in a compile test.  */
        |   exit (0);
        | #else
        |   char buf[PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1)
        |            + DIR_NAME_SIZE + BUF_SLOP];
        |   char *cwd = getcwd (buf, PATH_MAX);
        |   size_t initial_cwd_len;
        |   size_t cwd_len;
        |   int fail = 0;
        |   size_t n_chdirs = 0;
        |
        |   if (cwd == NULL)
        |     exit (10);
        |
        |   cwd_len = initial_cwd_len = strlen (cwd);
        |
        |   while (1)
        |     {
| size_t dotdot_max = PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN);
        |       char *c = NULL;
        |
        |       cwd_len += DIR_NAME_SIZE;
| /* If mkdir or chdir fails, it could be that this system cannot create | any file with an absolute name longer than PATH_MAX, such as cygwin. | If so, leave fail as 0, because the current working directory can't | be too long for getcwd if it can't even be created. On Linux with | the 9p file system, mkdir fails with error EINVAL when cwd_len gets | too long; ignore this failure because the getcwd() system call | produces good results whereas the gnulib substitute calls getdents64
        |          which fails with error EPROTO.
| For other errors, be pessimistic and consider that as a failure,
        |          too.  */
        |       if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0)
        |         {
        |           if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
        |             #ifdef __linux__
        |             if (! (errno == EINVAL))
        |             #endif
        |               fail = 20;
        |           break;
        |         }
        |
        |       if (PATH_MAX <= cwd_len && cwd_len < PATH_MAX + DIR_NAME_SIZE)
        |         {
        |           struct stat sb;
        |
        |           c = getcwd (buf, PATH_MAX);
        |           if (!c && errno == ENOENT)
        |             {
        |               fail = 11;
        |               break;
        |             }
        |           if (c)
        |             {
        |               fail = 31;
        |               break;
        |             }
        |           if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
        |             {
        |               fail = 21;
        |               break;
        |             }
        |
| /* Our replacement needs to be able to stat() long ../../ paths,
        |              so generate a path larger than PATH_MAX to check,
        |              avoiding the replacement if we can't stat().  */
        |           c = getcwd (buf, cwd_len + 1);
| if (c && !AT_FDCWD && stat (c, &sb) != 0 && is_ENAMETOOLONG (errno))
        |             {
        |               fail = 32;
        |               break;
        |             }
        |         }
        |
        |       if (dotdot_max <= cwd_len - initial_cwd_len)
        |         {
        |           if (dotdot_max + DIR_NAME_SIZE < cwd_len - initial_cwd_len)
        |             break;
        |           c = getcwd (buf, cwd_len + 1);
        |           if (!c)
        |             {
        |               if (! (errno == ERANGE || errno == ENOENT
        |                      || is_ENAMETOOLONG (errno)))
        |                 {
        |                   fail = 22;
        |                   break;
        |                 }
        |               if (AT_FDCWD || errno == ERANGE || errno == ENOENT)
        |                 {
        |                   fail = 12;
        |                   break;
        |                 }
        |             }
        |         }
        |
        |       if (c && strlen (c) != cwd_len)
        |         {
        |           fail = 23;
        |           break;
        |         }
        |       ++n_chdirs;
        |     }
        |
        |   /* Leaving behind such a deep directory is not polite.
        |      So clean up here, right away, even though the driving
        |      shell script would also clean up.  */
        |   {
        |     size_t i;
        |
        |     /* Try rmdir first, in case the chdir failed.  */
        |     rmdir (DIR_NAME);
        |     for (i = 0; i <= n_chdirs; i++)
        |       {
        |         if (chdir ("..") < 0)
        |           break;
        |         if (rmdir (DIR_NAME) != 0)
        |           break;
        |       }
        |   }
        |
        |   exit (fail);
        | #endif
        | }
        |
        configure:26101: result: yes, but with shorter paths
        configure:26112: checking for getpagesize
configure:26129: /usr/bin/gcc-4.2 -std=gnu99 -o conftest -pipe -Os - arch ppc -I/opt/local/include -L/opt/local/lib -Wl,- headerpad_max_install_names -arch ppc conftest.c >&5
        configure:26129: $? = 0
        configure:26138: result: yes
configure:26149: checking whether getcwd aborts when 4k < cwd_length < 16k configure:26285: /usr/bin/gcc-4.2 -std=gnu99 -o conftest -pipe -Os - arch ppc -I/opt/local/include -L/opt/local/lib -Wl,- headerpad_max_install_names -arch ppc conftest.c >&5
        configure:26285: $? = 0
        configure:26285: ./conftest
        configure:26285: $? = 0
        configure:26302: result: no
        configure:26539: checking for flockfile

Configure was invoked like this: configure --prefix=/opt/local -- disable-silent-rules --program-prefix=g TIME_T_32_BIT_OK=yes.

MacPorts had presumingly prepared such a process environment:

        DEBUG: Environment:
        CC='/usr/bin/gcc-4.2'
        CC_PRINT_OPTIONS='YES'
CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/ _opt_local_var_macports_sources_nue .de .rsync.macports.org_macports_release_tarballs_ports_sysutils_findutils/ findutils/work/.CC_PRINT_OPTIONS'
        CFLAGS='-pipe -Os -arch ppc'
        CPATH='/opt/local/include'
        CPPFLAGS='-I/opt/local/include'
        CXX='/usr/bin/g++-4.2'
        CXXFLAGS='-pipe -Os -arch ppc'
        DEVELOPER_DIR='/Developer'
        F90FLAGS='-pipe -Os -m32'
        FCFLAGS='-pipe -Os -m32'
        FFLAGS='-pipe -Os -m32'
        INSTALL='/usr/bin/install -c'
        LDFLAGS='-L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc'
        LIBRARY_PATH='/opt/local/lib'
        MACOSX_DEPLOYMENT_TARGET='10.5'
        OBJC='/usr/bin/gcc-4.2'
        OBJCFLAGS='-pipe -Os -arch ppc'
        OBJCXX='/usr/bin/g++-4.2'
        OBJCXXFLAGS='-pipe -Os -arch ppc'
        SORT='/usr/bin/sort'


I am going to try building findutils in my own environment and see (and report) what comes out.

--
Greetings

  Pete

I wouldn't recommend sex, drugs or insanity for everyone, but they've always worked for me.
                                – Hunter S. Thompson




reply via email to

[Prev in Thread] Current Thread [Next in Thread]