CC      [email protected]

> 2021年2月7日 下午8:54,fang <[email protected]> 写道:
> 
> I can reproduce this compilation failure on my Apple MacBook Pro M1 with 
> MacOS BigSur 11.2.
> The configure script will check *ac_cv_posix1_2008_realpath* to ensure that
> *realpath* function call exists on the target platform however this check 
> failed.
> Gnu global use *realpath* in many files, as you can see.
> 
> /libutil/getdbpath.c:240:                     if (realpath(p, root) == NULL) {
> ./libutil/getdbpath.c:327:                                    s = 
> realpath(makepath(root, s, NULL), buf);
> ./libutil/args.c:218:         if (!realpath(confpath, real))
> ./libutil/path.h:44:char *realpath(const char *, char *);
> ./libutil/abs2rel.c:122:         path = abs2rel("/sys/kern", realpath("/sys", 
> resolvedname), result,
> ./libutil/abs2rel.c:132:         path = abs2rel(realpath("/sys/kern", r1), 
> realpath("/sys", r2),
> ./libutil/abs2rel.c:135:     The realpath() function assures correct result, 
> but don't forget that
> ./libutil/abs2rel.c:136:     realpath() requires that all but the last 
> component of the path exist.
> ./libutil/nearsort.c:49:      if (root[0] == '\0' || realpath(path, real) == 
> NULL)
> ./libutil/nearsort.c:52:      fprintf(stderr, "realpath = %s\n", real);
> ./libutil/path.c:168: * realpath: get the complete path
> ./libutil/path.c:175:realpath(const char *in_path, char *out_path)
> ./libutil/find.c:492: * getrealpath: return a real path of dir using 
> allocated area.
> ./libutil/find.c:495:getrealpath(const char *dir)
> ./libutil/find.c:499: if ((real = realpath(dir, NULL)) == NULL)
> ./libutil/find.c:518: if ((real = realpath(dir, NULL)) == NULL)
> ./libutil/find.c:694:        if ((rootdir = realpath(start, NULL)) == NULL)
> ./libutil/find.c:705: curp->real = getrealpath(dir);
> ./libutil/find.c:915:                         curp->real = getrealpath(dir);
> ./htags/htags.c:1361:         char realpath[MAXPATHLEN];
> ./htags/htags.c:1367:         if (!vgetcwd(realpath, sizeof(realpath)))
> ./htags/htags.c:1371:         snprintf(distpath, sizeof(distpath), "%s/HTML", 
> realpath);
> ./htags/htags.c:1412:         if (realpath(dbpath, buf) == NULL)
> ./htags/htags.c:1413:                 die("cannot get realpath of dbpath.");
> ./gozilla/gozilla.c:285:              makefileurl(realpath(file, buf), 0, 
> URL);
> ./global/global.c:893:                if (realpath(path, buf) == NULL)
> ./global/global.c:923:                if (realpath(file_list, buf) == NULL)
> 
> However, the *stdlib.h* in MacOS BigSur 11.2 does provide us with a 
> *realpath* api, 
> I can workaround this configure check failure by removing the * 
> ac_cv_posix1_2008_realpath* checker.
> So maybe the configure script is not compatible on MacOS bigSur 11.2.
> 
> diff --git a/configure b/configure
> index 100a690..4e54a52 100755
> --- a/configure
> +++ b/configure
> @@ -14273,33 +14273,6 @@ case "$host_os" in
>       mingw*|*djgpp*)
>       ;;
>       *)
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether POSIX.1-2008 
> realpath is equipped" >&5
> -$as_echo_n "checking whether POSIX.1-2008 realpath is equipped... " >&6; }
> -if ${ac_cv_posix1_2008_realpath+:} false; then :
> -  $as_echo_n "(cached) " >&6
> -else
> -  if test "$cross_compiling" = yes; then :
> -  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> -as_fn_error $? "cannot run test program while cross compiling
> -See \`config.log' for more details" "$LINENO" 5; }
> -else
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -
> -main(){ (void)realpath("/./tmp", (void *)0); return 0; }
> -
> -_ACEOF
> -if ac_fn_c_try_run "$LINENO"; then :
> -  ac_cv_posix1_2008_realpath=yes
> -else
> -  ac_cv_posix1_2008_realpath=no
> -fi
> -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
> -  conftest.$ac_objext conftest.beam conftest.$ac_ext
> -fi
> -
> -fi
>  
>  { $as_echo "$as_me:${as_lineno-$LINENO}: result: 
> $ac_cv_posix1_2008_realpath" >&5
>  $as_echo "$ac_cv_posix1_2008_realpath" >&6; }
> 
> > Hello,
> > Thank you for the report.
> >
> > Could you please send this report to the autoconf bug mailing
> > list? Since this bug seems to be a autoconf's bug.
> > I cannot do anything, because I don't have a reproduction
> > environment for this problem.
> >
> > Thank you in advance.
> > 
> > Regards,
> > Shigio
> 
> > 2021年1月15日(金) 13:22 Michael Labbé <[email protected] 
> > <mailto:[email protected]>>:
> >
> > Package global failed to compile on my arm 11.1 system. This is due to an 
> > error because realpath cannot be found. The fix is to modify configure to 
> > include stdlib.h.
> >
> > Line 14291 of configure on global-6.6.5:
> >
> > main(){ (void)realpath("/./tmp", (void *)0); return 0; }
> >
> > Insert one line before that:
> >
> > #include<stdlib.h>
> > main(){ (void)realpath("/./tmp", (void *)0); return 0; }
> >
> > configure now succeeds.
> 
> 
> 
> > -- 
> > Shigio YAMAGUCHI <[email protected] <mailto:[email protected]>>
> > PGP fingerprint:
> > 26F6 31B4 3D62 4A92 7E6F  1C33 969C 3BE3 89DD A6EB
> 

Reply via email to