Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
base: d2ef08d3bee8
Choose a base ref
...
head repository: NixOS/nixpkgs
compare: acfa5d83245e
Choose a head ref
  • 2 commits
  • 1 file changed
  • 2 contributors

Commits on Nov 27, 2019

  1. git: fix the "perlSupport = false" configuration

    When perlSupport = false, we will set NO_PERL=1, and build Git without
    Perl support. This is a build option that Git supports. However, Git's
    test suite still requires a Perl to be available to run the tests, and
    we did not provide one. The tests respect PERL_PATH, and if it is not
    set, they default to /usr/bin/perl.
    
    Before this commit, if we set "perlSupport = false", then no Perl would
    be available to the package, and so the tests would default to
    /usr/bin/perl. When building without a sandbox, that could still work,
    even though there is no "perl" on the path, because the tests defaulted
    to an absolute path.
    
    You can reproduce this issue as follows:
    
        nix-build -E 'let pkgs = (import ./default.nix) {}; in pkgs.git.override { perlSupport = false; }'
    
    I just ran into this when trying to build pkgs.git from an old version
    of Nixpkgs that I was able to build just fine in the past, and today it
    would not build any more, complaining when running the tests:
    
        make -C t/ all
        make[1]: Entering directory '/build/git-2.18.0/t'
        rm -f -r 'test-results'
        /nix/store/czx8vkrb9jdgjyz8qfksh10vrnqa723l-bash-4.4-p23/bin/bash: /usr/bin/perl: No such file or directory
    
    In the past the sandbox was not enabled by default, so then it worked
    for me. But now that it is enabled, my host's (not NixOS) /usr/bin/perl
    is no longer accessible, and the build fails.
    
    The solution is to explicitly set PERL_PATH when running the tests. This
    *almost* works, except that there appears to be a bug in the test for
    "git request-pull". That command is a Bash script that calls Perl at
    some point, so it requires Perl, and therefore it cannot be supported
    when NO_PERL=1. But that particular test does not check whether Git was
    compiled with Perl support (other tests do include that check), and that
    makes the test fail:
    
        t5150-request-pull.sh ..............................
        not ok 4 - pull request after push
        not ok 5 - request asks HEAD to be pulled
        not ok 6 - pull request format
        not ok 7 - request-pull ignores OPTIONS_KEEPDASHDASH poison
        not ok 9 - pull request with mismatched object
        not ok 10 - pull request with stale object
        Dubious, test returned 1 (wstat 256, 0x100)
        Failed 6/10 subtests
    
    This output makes sense if you look at t5150-request-pull.sh. Test 1 and
    2 are setup steps. Test 3 does call request-pull, but it expects the
    command to fail, and it cannot distinguish between the command exiting
    with a nonzero exit code, or failing to start it at all. So test 3
    passes for the wrong reasons. Test 4 through 10 all call request-pull,
    so they fail.
    
    The quick workaround here is to disable the test. I will look into
    upstreaming a patch that makes the test skip itself when Perl is
    disabled.
    ruuda committed Nov 27, 2019
    Copy the full SHA
    2163fc7 View commit details
    Browse the repository at this point in the history

Commits on Nov 28, 2019

  1. Merge pull request #74213 from ruuda/fix-git-perl-support

    git: fix the "perlSupport = false" configuration
    wmertens committed Nov 28, 2019
    Copy the full SHA
    acfa5d8 View commit details
    Browse the repository at this point in the history