Making rsync compile under Mac OS X 10.3.9 with extended attributes

Robert DuToit rdutoit at capecod.net
Sat Jan 26 11:36:35 GMT 2008


Hi Matt,

I tried

./configure --disable-acl-support --enable-xattr-support

and got

`XATTR_NOFOLLOW' undeclared (first use in this function)

so then

/configure --disable-acl-support --disable-xattr-support

which worked

then added patches

patch -p1 <patches/flags.diff
patch -p1 <patches/osx-create-time.diff
./configure --disable-acl-support --enable-xattr-support
make

OK this time. Then I tried some simple tests on OS10.3X

mypathto/rsync -a --fileflags testdir destdir  (no AX of course!)

It works and flags seem to work at least for locked files. Creation  
time was not saved though.....

any thoughts on xattrs or creation dates?   Quite a few people still  
ask me to make support scripts on OS 10.3.9. Acls probably not such an  
issue on OS 10.3 and earlier.

Thanks Rob

complete output from ./configure --disable-acl-support --enable-xattr- 
support:

make
Last login: Sat Jan 26 05:41:50 on console
Welcome to Darwin!
Robert-DuToits-Computer:~ robertdutoit$ cd rsync-3.0.0pre8
Robert-DuToits-Computer:~/rsync-3.0.0pre8 robertdutoit$ ./configure -- 
disable-acl-support --enable-xattr-support
configure.sh: Configuring rsync 3.0.0pre8
checking build system type... powerpc-apple-darwin7.2.0
checking host system type... powerpc-apple-darwin7.2.0
checking target system type... powerpc-apple-darwin7.2.0
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc option to accept ISO C99... -std=gnu99
checking for gcc -std=gnu99 option to accept ISO Standard C...  
(cached) -std=gnu99
checking whether to include debugging symbols... yes
checking for remsh... 0
checking for yodl2man... 0
checking the group for user "nobody"... nobody
checking for broken largefile support... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking ipv6 stack type... kame
checking for library containing getaddrinfo... none required
checking whether to call shutdown on all sockets... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking sys/fcntl.h usability... yes
checking sys/fcntl.h presence... yes
checking for sys/fcntl.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/unistd.h usability... yes
checking sys/unistd.h presence... yes
checking for sys/unistd.h... yes
checking for unistd.h... (cached) yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking grp.h usability... yes
checking grp.h presence... yes
checking for grp.h... yes
checking compat.h usability... no
checking compat.h presence... no
checking for compat.h... no
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking for sys/wait.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/filio.h usability... yes
checking sys/filio.h presence... yes
checking for sys/filio.h... yes
checking for string.h... (cached) yes
checking for stdlib.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/mode.h usability... no
checking sys/mode.h presence... no
checking for sys/mode.h... no
checking sys/un.h usability... yes
checking sys/un.h presence... yes
checking for sys/un.h... yes
checking sys/attr.h usability... yes
checking sys/attr.h presence... yes
checking for sys/attr.h... yes
checking glob.h usability... yes
checking glob.h presence... yes
checking for glob.h... yes
checking mcheck.h usability... no
checking mcheck.h presence... no
checking for mcheck.h... no
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking arpa/nameser.h usability... yes
checking arpa/nameser.h presence... yes
checking for arpa/nameser.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking malloc.h usability... no
checking malloc.h presence... no
checking for malloc.h... no
checking float.h usability... yes
checking float.h presence... yes
checking for float.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking libcharset.h usability... yes
checking libcharset.h presence... yes
checking for libcharset.h... yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking whether sys/types.h defines makedev... yes
checking if makedev takes 3 args... no
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for long long... yes
checking size of long long... 8
checking for short... yes
checking size of short... 2
checking for int16_t... yes
checking size of int16_t... 2
checking for uint16_t... yes
checking size of uint16_t... 2
checking for int32_t... yes
checking size of int32_t... 4
checking for uint32_t... yes
checking size of uint32_t... 4
checking for int64_t... yes
checking size of int64_t... 8
checking for off_t... yes
checking size of off_t... 8
checking for off64_t... no
checking size of off64_t... 0
checking for time_t... yes
checking size of time_t... 4
checking for inline... inline
checking for long double with more range or precision than double... no
checking return type of signal handlers... void
checking for uid_t in sys/types.h... yes
checking for mode_t... yes
checking for off_t... (cached) yes
checking for size_t... yes
checking for pid_t... yes
checking for id_t... no
checking type of array argument to getgroups... gid_t
checking for struct stat.st_rdev... yes
checking for socklen_t... yes
checking for errno in errno.h... yes
checking for connect... yes
checking for library containing inet_ntop... none required
checking for library containing libiconv_open... -liconv
checking for iconv declaration...
          extern size_t iconv (iconv_t cd, const char * *inbuf, size_t  
*inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for inet_ntop... yes
checking for inet_pton... yes
checking for struct addrinfo... yes
checking for struct sockaddr_storage... yes
checking whether defines needed by getaddrinfo exist... yes
checking for getaddrinfo... yes
checking for struct sockaddr.sa_len... yes
checking for struct sockaddr_in.sin_len... yes
checking for struct sockaddr_un.sun_len... no
checking for struct sockaddr_in6.sin6_scope_id... yes
checking for struct stat64... no
checking for strcasecmp... yes
checking for aclsort... no
checking for aclsort in -lsec... no
checking for utime.h... (cached) yes
checking whether utime accepts a null argument... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for waitpid... yes
checking for wait4... yes
checking for getcwd... yes
checking for strdup... yes
checking for chown... yes
checking for chmod... yes
checking for lchmod... no
checking for mknod... yes
checking for mkfifo... yes
checking for fchmod... yes
checking for fstat... yes
checking for ftruncate... yes
checking for strchr... yes
checking for readlink... yes
checking for link... yes
checking for utime... yes
checking for utimes... yes
checking for lutimes... no
checking for strftime... yes
checking for memmove... yes
checking for lchown... no
checking for vsnprintf... yes
checking for snprintf... yes
checking for vasprintf... yes
checking for asprintf... yes
checking for setsid... yes
checking for glob... yes
checking for strpbrk... yes
checking for strlcat... yes
checking for strlcpy... yes
checking for strtol... yes
checking for mallinfo... no
checking for getgroups... yes
checking for setgroups... yes
checking for geteuid... yes
checking for getegid... yes
checking for setlocale... yes
checking for setmode... yes
checking for open64... no
checking for lseek64... no
checking for mkstemp64... no
checking for mtrace... no
checking for va_copy... no
checking for __va_copy... no
checking for strerror... yes
checking for putenv... yes
checking for iconv_open... no
checking for locale_charset... yes
checking for nl_langinfo... yes
checking for getxattr... no
checking for extattr_get_link... no
checking for sigaction... yes
checking for sigprocmask... yes
checking for setattrlist... yes
checking for libiconv_open... yes
checking for getpgrp... yes
checking for tcgetpgrp... yes
checking whether getpgrp requires zero arguments... yes
checking whether chown() modifies symlinks... no
checking whether link() can hard-link symlinks... no
checking whether link() can hard-link special files... no
checking for working socketpair... yes
checking for poptGetContext in -lpopt... no
checking whether to use included libpopt... ./popt
checking for unsigned char... yes
checking for broken readdir... no
checking for utimbuf... yes
checking if gettimeofday takes tz argument... yes
checking for C99 vsnprintf... yes
checking for secure mkstemp... yes
checking if mknod creates FIFOs... (-1 1) no
checking if mknod creates sockets... (-1 1) no
checking whether -c -o works... yes
checking sys/acl.h usability... no
checking sys/acl.h presence... no
checking for sys/acl.h... no
checking acl/libacl.h usability... no
checking acl/libacl.h presence... no
checking for acl/libacl.h... no
checking for _acl... no
checking for __acl... no
checking for _facl... no
checking for __facl... no
checking whether to support ACLs... no
checking attr/xattr.h usability... no
checking attr/xattr.h presence... no
checking for attr/xattr.h... no
checking sys/xattr.h usability... no
checking sys/xattr.h presence... no
checking for sys/xattr.h... no
checking sys/extattr.h usability... no
checking sys/extattr.h presence... no
checking for sys/extattr.h... no
checking whether to support extended attributes... Using OS X xattrs
configure.sh: creating ./config.status
config.status: creating Makefile
config.status: creating lib/dummy
config.status: creating zlib/dummy
config.status: creating popt/dummy
config.status: creating shconfig
config.status: creating config.h

     rsync 3.0.0pre8 configuration successful

Robert-DuToits-Computer:~/rsync-3.0.0pre8 robertdutoit$ make
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
flist.c -o flist.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
rsync.c -o rsync.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
generator.c -o generator.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
receiver.c -o receiver.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
cleanup.c -o cleanup.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
sender.c -o sender.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
exclude.c -o exclude.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
util.c -o util.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
main.c -o main.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
checksum.c -o checksum.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
match.c -o match.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
syscall.c -o syscall.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
log.c -o log.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
backup.c -o backup.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
options.c -o options.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
io.c -o io.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
compat.c -o compat.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
hlink.c -o hlink.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
token.c -o token.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
uidlist.c -o uidlist.o
uidlist.c: In function `match_uid':
uidlist.c:210: warning: comparison between signed and unsigned
uidlist.c: In function `match_gid':
uidlist.c:222: warning: comparison between signed and unsigned
uidlist.c:226: warning: comparison between signed and unsigned
uidlist.c: In function `add_uid':
uidlist.c:249: warning: comparison between signed and unsigned
uidlist.c: In function `add_gid':
uidlist.c:267: warning: comparison between signed and unsigned
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
socket.c -o socket.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
hashtable.c -o hashtable.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
fileio.c -o fileio.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
batch.c -o batch.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
clientname.c -o clientname.o
clientname.c: In function `compare_addrinfo_sockaddr':
clientname.c:269: warning: int format, size_t arg (arg 4)
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
chmod.c -o chmod.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
acls.c -o acls.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
xattrs.c -o xattrs.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
progress.c -o progress.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
pipe.c -o pipe.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
params.c -o params.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
loadparm.c -o loadparm.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
clientserver.c -o clientserver.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
access.c -o access.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
connection.c -o connection.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
authenticate.c -o authenticate.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/wildmatch.c -o lib/wildmatch.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/compat.c -o lib/compat.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/snprintf.c -o lib/snprintf.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/mdfour.c -o lib/mdfour.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/md5.c -o lib/md5.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/permstring.c -o lib/permstring.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/pool_alloc.c -o lib/pool_alloc.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/sysacls.c -o lib/sysacls.o
gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W -I./popt  -c  
lib/sysxattrs.c -o lib/sysxattrs.o
lib/sysxattrs.c: In function `sys_lgetxattr':
lib/sysxattrs.c:57: warning: implicit declaration of function `getxattr'
lib/sysxattrs.c:57: error: `XATTR_NOFOLLOW' undeclared (first use in  
this function)
lib/sysxattrs.c:57: error: (Each undeclared identifier is reported  
only once
lib/sysxattrs.c:57: error: for each function it appears in.)
lib/sysxattrs.c: In function `sys_fgetxattr':
lib/sysxattrs.c:62: warning: implicit declaration of function  
`fgetxattr'
lib/sysxattrs.c: In function `sys_lsetxattr':
lib/sysxattrs.c:67: warning: implicit declaration of function `setxattr'
lib/sysxattrs.c:67: error: `XATTR_NOFOLLOW' undeclared (first use in  
this function)
lib/sysxattrs.c: In function `sys_lremovexattr':
lib/sysxattrs.c:72: warning: implicit declaration of function  
`removexattr'
lib/sysxattrs.c:72: error: `XATTR_NOFOLLOW' undeclared (first use in  
this function)
lib/sysxattrs.c: In function `sys_llistxattr':
lib/sysxattrs.c:77: warning: implicit declaration of function  
`listxattr'
lib/sysxattrs.c:77: error: `XATTR_NOFOLLOW' undeclared (first use in  
this function)
make: *** [lib/sysxattrs.o] Error 1
Robert-DuToits-Computer:~/rsync-3.0.0pre8 robertdutoit$













On Jan 25, 2008, at 11:13 PM, Matt McCutchen wrote:

> On Fri, 2008-01-25 at 21:38 -0500, Robert DuToit wrote:
>> I reinstalled developer tools again on OS10.3.2 and ran make again  
>> and
>> this time and saw more action but a lot of errors such as the one
>> mentioned by Vitorio:
>>
>>  error: `ACL_TYPE_DEFAULT' undeclared (first use in this function)
>
> Please try again with:
>
> ./configure --disable-acl-support --enable-xattr-support
>
> Matt
>



More information about the rsync mailing list