Skip to content

Build reproducibility depends on ipv6 availability #675

Open
@pwaller

Description

@pwaller

Version: Rsync 3.3.0.

The config test for inet6 support means that the build you get varies according to whether or not ipv6 is enabled on the machine doing the build. This makes it so that two machines trying to verify each other's rsync builds will find differences unless their runtime configuration is the same.

#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
int main()
{
    if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
        exit(1);
    else
        exit(0);
}

On one machine I have booted with kernel command line ipv6.disable=1, this results in exit 1:

socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) = -1 EAFNOSUPPORT (Address family not supported by protocol)

And another it succeeds.

Is it intended to fuse off ipv6 functionality if the building machine happens to have ipv6 disabled? I would have expected both cases to result in an rsync binary capable of using ipv6; even if it happened to be unavailable at runtime during the build.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions