The existing post-install was not successfully patching the git-gui script,
and thus was invoking the packaged osx app which uses the system tk,
which is too old to work (and is no longer supported by Apple anyway).
This has several advantages:
1. It takes up less space on disk in-between builds in the nix store.
2. It uses less space in the binary cache for vendor derivation packages.
3. It uses less network traffic downloading from the binary cache.
4. It plays nicely with hashed mirrors like tarballs.nixos.org, which only
substitute --flat hashes on single files (not recursive directory hashes).
5. It's consistent with how simple `fetchurl` src derivations work.
6. It provides a stronger abstraction between input src-package and output
package, e.g., it's harder to accidentally depend on the src derivation at
runtime by referencing something like `${src}/etc/index.html`. Likewise, in
the store it's harder to get confused with something that is just there as a
build-time dependency vs. a runtime dependency, since the build-time
src dependencies are tarred up.
Disadvantages are:
1. It takes slightly longer to untar at the start of a build.
As currently implemented, this attaches the compacted vendor.tar.gz feature as a
rider on `verifyCargoDeps`, since both of them are relatively newly implemented
behavior that change the `cargoSha256`.
If this PR is accepted, I will push forward the remaining rust packages with a
series of treewide PRs to update the `cargoSha256`s.
Git ships with a zsh completion script, but this script was previously
only available at $out/share/git/contrib/completion/git-completion.zsh,
which is not a path (or a filename) that would be discovered by a
typical zsh installation. This commit symlinks that file to
$out/share/zsh/site-functions/_git, which is a more standard location.
That zsh completion script is mostly a wrapper around the Bash
completion script, so this commit also patches the former so that it can
"find" the latter.
According to https://repology.org/repository/nix_unstable/problems, we have a
lot of packages that have http links that redirect to https as their homepage.
This commit updates all these packages to use the https links as their
homepage.
The following script was used to make these updates:
```
curl https://repology.org/api/v1/repository/nix_unstable/problems \
| jq '.[] | .problem' -r \
| rg 'Homepage link "(.+)" is a permanent redirect to "(.+)" and should be updated' --replace 's@$1@$2@' \
| sort | uniq > script.sed
find -name '*.nix' | xargs -P4 -- sed -f script.sed -i
```
The sed invocation was changing all lines matching "local daemon.*".
This changed the line it was supposed to, but two other lines that also
matched that pattern were being modified, which meant that the
"daemon_pid_var" and "daemon_pid" variables were not defined when they
should have been.
Idea shamelessly stolen from 4e60b0efae.
I realized that I don't really know anymore where I'm listed as maintainer and what
I'm actually (co)-maintaining which means that I can't proactively take
care of packages I officially maintain.
As I don't have the time, energy and motivation to take care of stuff I
was interested in 1 or 2 years ago (or packaged for someone else in the
past), I decided that I make this explicit by removing myself from several
packages and adding myself in some other stuff I'm now interested in.
I've seen it several times now that people remove themselves from a
package without removing the package if it's unmaintained after that
which is why I figured that it's fine in my case as the affected pkgs
are rather low-prio and were pretty easy to maintain.
Since bash-completion rules are loaded dynamically, the completion
rules for `gitk <Tab>` waere not being loaded until the user first
typed `git <Tab>`. Fix this by adding a symlink named `gitk`.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
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.
The tests for null patterns where changed in 25754125cef278c7e9492fbd6dc4a28319b01f18,
it's possible utf-8 normalisation is causing different behaviour here.
not ok 54 - LC_ALL='C' git grep -P -f f -i 'Æ<NUL>[Ð]' a
not ok 57 - LC_ALL='C' git grep -P -f f -i '[Æ]<NUL>Ð' a
not ok 60 - LC_ALL='C' git grep -P -f f -i '[Æ]<NUL>ð' a
not ok 63 - LC_ALL='C' git grep -P -f f -i 'Æ<NUL>Ð' a
Dubious, test returned 1 (wstat 256, 0x100)
Failed 4/145 subtests
(less 48 skipped subtests: 93 okay)
Putting the file in $out/share/bash-completion/completions means that it will be loaded on demand by nixpkgs.bash-completion.
With the old location, the user would either have to explicitly source the file during bash startup, or set BASH_COMPLETION_COMPAT_DIR before sourcing bash_completion.sh, which will eagerly load everything in that directory.
There ver very many conflicts, basically all due to
name -> pname+version. Fortunately, almost everything was auto-resolved
by kdiff3, and for now I just fixed up a couple evaluation problems,
as verified by the tarball job. There might be some fallback to these
conflicts, but I believe it should be minimal.
Hydra nixpkgs: ?compare=1538299
Reduces gitMinimal closure size from 329.6M to 174.8M.
Fixes the issue https://github.com/NixOS/nixpkgs/issues/64350.
In git 2.22.0 git-stash is no longer a shell script and now it is just a symlink to git.
`postInstall` assumed that it was a shell script, tried to patch it and
ended up corrupting the file and made `strip` refuse stripping it.
A recent upgrade of cargo-vendor changed its output slightly, which
broke all cargoSha256 hashes in nixpkgs.
See https://github.com/NixOS/nixpkgs/issues/60668 for more information.
Since then, a few hashes have been fixed in master by hand, but there
were a lot still to do, so I did all of the ones left over with some
scripts I wrote.
The one hash I wasn’t able to update was habitat's, because it’s
currently broken and the build doesn’t get far enough to produce a
hash anyway.
adds a tool to get the paths of the dependencies needed by the helper scripts
(which are written only once and are never updated) to the output and patches
them to use it expand their path
gnupg is gnupg 2.2. gnupg1 is also gnupg 2.2, just with a few extra
symlinks in the bin directory. None of these packages need those
symlinks, and it's confusing for them to say they're depending on
"gnupg1", so switch their dep to plain "gnupg".
Use a separate `man` output[1]. All outputs will be installed when using
the package i.e. with `nix-env -f . -iA gitAndTools.git-ignore`.
[1] https://nixos.org/nix/manual/#ssec-derivation
The current version no longer works with our packaged Mecurial.[1]
The original repository appears to no longer be maintained, but there is
a maintained fork, which is now used for the Debian package.
[1]: https://github.com/felipec/git-remote-hg/issues/72
I'm baaaaack!
This patch reverts my patch where I removed myself as maintainer because
of my traveling. I'm back now and I want to maintain these packages
again.
This reverts commit ce1c1e3093.
We need to add git to PATH to build the manual
as they execute `hub version | tail -1` to get the version
to embed into it.
Though git is really only needed because it runs `git version`
as well.
* Make the build system embed the correct path to gitweb into git-instaweb
* Move gitweb fixups to the git expression, to make sure that gitweb
used by git-instaweb is functional
* This will increase the closure size of git, but only with perlSupport
* categorize inputs appropriately
* only put man pages into share/man; previously we copied other formats
as well as intermediate files used in man page generation.
(which 'man' complained about but otherwise seemed to ignore)
Remove 'update_latest_release.go' so we don't try to build it
since this fails due to unmet dependencies.
AFAICT this utility is only meant for developer use anyway,
and helps manage/create new github releases for the project.
The ZSH completion script of `tig` basically imports the bash completion
script and uses it as completion approach. Unfortunately the script
takes several assumptions about the directory structure using
`$funcsourcetrace`[1] that don't apply on NixOS.
The easiest workaround is t opatch the completion script and import the
bash completion script from `$out`.
[1] http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#index-funcsourcetrace
groff may not be installed system-wide or may be outside cgit's path
(e.g. when running cgit using uwsgi). As a result, the man2html filter
fails. Replace groff by its full path in man2html.
* substitute(): --subst-var was silently coercing to "" if the variable does not exist.
* libffi: simplify using `checkInputs`
* pythonPackges.hypothesis, pythonPackages.pytest: simpify dependency cycle fix
* utillinux: 2.32 -> 2.32.1
https://lkml.org/lkml/2018/7/16/532
* busybox: 1.29.0 -> 1.29.1
* bind: 9.12.1-P2 -> 9.12.2
https://ftp.isc.org/isc/bind9/9.12.2/RELEASE-NOTES-bind-9.12.2.html
* curl: 7.60.0 -> 7.61.0
* gvfs: make tests run, but disable
* ilmbase: disable tests on i686. Spooky!
* mdds: fix tests
* git: disable checks as tests are run in installcheck
* ruby: disable tests
* libcommuni: disable checks as tests are run in installcheck
* librdf: make tests run, but disable
* neon, neon_0_29: make tests run, but disable
* pciutils: 3.6.0 -> 3.6.1
Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/pciutils/versions.
* mesa: more include fixes
mostly from void-linux (thanks!)
* npth: 1.5 -> 1.6
minor bump
* boost167: Add lockfree next_prior patch
* stdenv: cleanup darwin bootstrapping
Also gets rid of the full python and some of it's dependencies in the
stdenv build closure.
* Revert "pciutils: use standardized equivalent for canonicalize_file_name"
This reverts commit f8db20fb3a.
Patching should no longer be needed with 3.6.1.
* binutils-wrapper: Try to avoid adding unnecessary -L flags
(cherry picked from commit f3758258b8895508475caf83e92bfb236a27ceb9)
Signed-off-by: Domen Kožar <domen@dev.si>
* libffi: don't check on darwin
libffi usages in stdenv broken darwin. We need to disable doCheck for that case.
* "rm $out/share/icons/hicolor/icon-theme.cache" -> hicolor-icon-theme setup-hook
* python.pkgs.pytest: setupHook to prevent creation of .pytest-cache folder, fixes#40273
When `py.test` was run with a folder as argument, it would not only
search for tests in that folder, but also create a .pytest-cache folder.
Not only is this state we don't want, but it was also causing
collisions.
* parity-ui: fix after merge
* python.pkgs.pytest-flake8: disable test, fix build
* Revert "meson: 0.46.1 -> 0.47.0"
With meson 0.47.0 (or 0.47.1, or git)
things are very wrong re:rpath handling
resulting in at best missing libs but
even corrupt binaries :(.
When we run patchelf it masks the problem
by removing obviously busted paths.
Which is probably why this wasn't noticed immediately.
Unfortunately the binary already
has a long series of paths scribbled
in a space intended for a much smaller string;
in my testing it was something like
lengths were 67 with 300+ written to it.
I think we've reported the relevant issues upstream,
but unfortunately it appears our patches
are what introduces the overwrite/corruption
(by no longer being correct in what they assume)
This doesn't look so bad to fix but it's
not something I can spend more time on
at the moment.
--
Interestingly the overwritten string data
(because it is scribbled past the bounds)
remains in the binary and is why we're suddenly
seeing unexpected references in various builds
-- notably this is is the reason we're
seeing the "extra-utils" breakage
that entirely crippled NixOS on master
(and probably on staging before?).
Fixes#43650.
This reverts commit 305ac4dade.
(cherry picked from commit 273d68eff8f7b6cd4ebed3718e5078a0f43cb55d)
Signed-off-by: Domen Kožar <domen@dev.si>
This makes the command ‘nix-env -qa -f. --arg config '{skipAliases =
true;}'’ work in Nixpkgs.
Misc...
- qtikz: use libsForQt5.callPackage
This ensures we get the right poppler.
- rewrites:
docbook5_xsl -> docbook_xsl_ns
docbook_xml_xslt -> docbook_xsl
diffpdf: fixup
* treewide: http -> https sources
This updates the source urls of all top-level packages from http to
https where possible.
* buildtorrent: fix url and tab -> spaces
Lots of packages are missing versions in their name. This adds them
where appropriate. These were found with this command:
$ nix-env -qa -f. | grep -v '\-[0-9A-Za-z.-_+]*$' | grep -v '^hook$'
See issue #41007.
I'm working to resolve this but it will take some time
(patches sent to upstream musl, maybe to git afterwards)
and for now this blocks quite a lot.
If that doesn't work out we can explore options such as
always using GNU libiconv with musl.
Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/git-cola/versions.
These checks were done:
- built on NixOS
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-cola-wrapped -h’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-cola-wrapped --help’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-cola-wrapped --version’ and found version 3.1
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-cola-wrapped version’ and found version 3.1
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-cola -h’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-cola --help’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-cola --version’ and found version 3.1
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-cola version’ and found version 3.1
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-dag-wrapped -h’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-dag-wrapped --help’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/.git-dag-wrapped --version’ and found version 3.1
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-dag -h’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-dag --help’ got 0 exit code
- ran ‘/nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1/bin/git-dag --version’ and found version 3.1
- found 3.1 with grep in /nix/store/vdgbmam99abv4kryg2bn31vkzdxk90cq-git-cola-3.1
- directory tree listing: https://gist.github.com/af016e8541c2ac80ef4e4e16a00bc0de
Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/git-remote-gcrypt/versions.
These checks were done:
- built on NixOS
- ran ‘/nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1/bin/git-remote-gcrypt -h’ got 0 exit code
- ran ‘/nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1/bin/git-remote-gcrypt --help’ got 0 exit code
- ran ‘/nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1/bin/git-remote-gcrypt help’ got 0 exit code
- ran ‘/nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1/bin/.git-remote-gcrypt-wrapped -h’ got 0 exit code
- ran ‘/nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1/bin/.git-remote-gcrypt-wrapped --help’ got 0 exit code
- ran ‘/nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1/bin/.git-remote-gcrypt-wrapped help’ got 0 exit code
- found 1.1 with grep in /nix/store/xqncvvl7rynvbw0lf27d68qj879s26bm-git-remote-gcrypt-1.1
- directory tree listing: https://gist.github.com/f375e7b41aa0075f2c539d2c32748c12
Otherwise the build fails with the perplexing error
make: *** No rule to make target 'cmd-list.made', needed by 'doc.dep'. Stop.
make: Leaving directory '/tmp/nix-build-git-2.16.3.drv-0/git-2.16.3/Documentation'
on NixOS (but not on Debian, where it succeeds, presumably since it picks up the
system perl).