If the same source gets built twice the resulting files may differ. One example is this: ... [ 305s] /usr/bin/perl -w ./rpc/genprotocol.pl /usr/bin/rpcgen -c \ [ 305s] remote/remote_protocol.x ./remote/remote_protocol.c ... [ 577s] /usr/src/debug/libvirt-20150929T082652.68572de/src/remote/remote_protocol.c differs (C source, ASCII text) [ 577s] --- old//usr/src/debug/libvirt-20150929T082652.68572de/src/remote/remote_protocol.c 2015-09-30 11:34:31.000000000 +0000 [ 577s] +++ new//usr/src/debug/libvirt-20150929T082652.68572de/src/remote/remote_protocol.c 2015-09-30 14:57:39.000000000 +0000 [ 577s] @@ -2084,8 +2084,8 @@ [ 577s] bool_t [ 577s] xdr_remote_domain_get_vcpus_ret (XDR *xdrs, remote_domain_get_vcpus_ret *objp) [ 577s] { [ 577s] - char **objp_cpp1 = (char **) (void *) &objp->cpumaps.cpumaps_val; [ 577s] char **objp_cpp0 = (char **) (void *) &objp->info.info_val; [ 577s] + char **objp_cpp1 = (char **) (void *) &objp->cpumaps.cpumaps_val; [ 577s] [ 577s] if (!xdr_array (xdrs, objp_cpp0, (u_int *) &objp->info.info_len, REMOTE_VCPUINFO_MAX, [ 577s] sizeof (remote_vcpu_info), (xdrproc_t) xdr_remote_vcpu_info)) ... The input is like: bool_t xdr_remote_domain_get_vcpus_ret (XDR *xdrs, remote_domain_get_vcpus_ret *objp) { register int32_t *buf; if (!xdr_array (xdrs, (char **)&objp->info.info_val, (u_int *) &objp->info.info_len, REMOTE_VCPUINFO_MAX, sizeof (remote_vcpu_info), (xdrproc_t) xdr_remote_vcpu_info)) return FALSE; if (!xdr_bytes (xdrs, (char **)&objp->cpumaps.cpumaps_val, (u_int *) &objp->cpumaps.cpumaps_len, REMOTE_CPUMAPS_MAX)) return FALSE; return TRUE; } Looks like the perl script transforms the pointers, but it does not sort them to enforce an order. I think its the map() which does it, but dont know enough perl to be sure. How can this be fixed? Olaf -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list