diff options
author | Peter Simons <simons@cryp.to> | 2013-03-25 12:21:45 +0100 |
---|---|---|
committer | Peter Simons <simons@cryp.to> | 2013-03-25 12:47:39 +0100 |
commit | ab98d72fad2c657836d36fe0ac2f7dac54f1b778 (patch) | |
tree | a8955576a9271dc92b9b75b7ab0f9b969f942bae /pkgs | |
parent | 16863d8ffe24649fb6a7500f2b457dd2e559de47 (diff) | |
download | nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.tar nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.tar.gz nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.tar.bz2 nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.tar.lz nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.tar.xz nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.tar.zst nixpkgs-ab98d72fad2c657836d36fe0ac2f7dac54f1b778.zip |
git: fix build on FreeBSD
Our hard-linking code depended on md5sum, which FreeBSD doesn't have in its system environment. To avoid that impure dependency, the hard-linking is now done with the 'hardlink' utility from Nixpkgs.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/applications/version-management/git-and-tools/default.nix | 2 | ||||
-rw-r--r-- | pkgs/applications/version-management/git-and-tools/git/default.nix | 40 |
2 files changed, 11 insertions, 31 deletions
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix index b0d8cf7d9c5..fa2d2647049 100644 --- a/pkgs/applications/version-management/git-and-tools/default.nix +++ b/pkgs/applications/version-management/git-and-tools/default.nix @@ -10,7 +10,7 @@ rec { git = lib.makeOverridable (import ./git) { inherit fetchurl stdenv curl openssl zlib expat perl python gettext gnugrep asciidoc texinfo xmlto docbook2x docbook_xsl docbook_xml_dtd_45 libxslt - cpio tcl tk makeWrapper subversionClient; + cpio tcl tk makeWrapper subversionClient hardlink; svnSupport = false; # for git-svn support guiSupport = false; # requires tcl/tk sendEmailSupport = false; # requires plenty of perl libraries diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix index 47f86bece82..b006354a014 100644 --- a/pkgs/applications/version-management/git-and-tools/git/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git/default.nix @@ -1,6 +1,6 @@ { fetchurl, stdenv, curl, openssl, zlib, expat, perl, python, gettext, cpio, gnugrep , asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45 -, libxslt, tcl, tk, makeWrapper +, libxslt, tcl, tk, makeWrapper, hardlink , svnSupport, subversionClient, perlLibs, smtpPerlLibs , guiSupport , withManual ? true @@ -111,46 +111,26 @@ stdenv.mkDerivation { notSupported "$out/$prog" \ "reinstall with config git = { guiSupport = true; } set" done - '') - - # Don't know why hardlinks aren't created. git installs the same executable - # multiple times into $out so replace duplicates by symlinks because I - # haven't tested whether the nix distribution system can handle hardlinks. - # This reduces the size of $out from 115MB down to 13MB on x86_64-linux! - + '' - declare -A seen - shopt -s globstar - for f in "$out/"**; do - if [ -L "$f" ]; then continue; fi - test -f "$f" || continue - sum=$(md5sum "$f"); - sum=''\${sum/ */} - if [ -z "''\${seen["$sum"]}" ]; then - seen["$sum"]="$f" - else - rm "$f"; ln -v -s "''\${seen["$sum"]}" "$f" - fi - done - ''; + ''); + + # Git installs many copies of the same binary using hardlinks, but unfortunately + # our patchELF phase re-writes those files and destroys the hardlinks in the + # process. This utility re-generates them afterwards. + postFixup = "${hardlink}/bin/hardlink $out"; enableParallelBuilding = true; meta = { - license = "GPLv2"; - homepage = http://git-scm.com/; + homepage = "http://git-scm.com/"; description = "Git, a popular distributed version control system"; + license = stdenv.lib.licenses.gpl2Plus; longDescription = '' Git, a popular distributed version control system designed to handle very large projects with speed and efficiency. ''; - maintainers = - [ # Add your name here! - stdenv.lib.maintainers.ludo - stdenv.lib.maintainers.simons - ]; - platforms = stdenv.lib.platforms.all; + maintainers = [ stdenv.lib.maintainers.ludo stdenv.lib.maintainers.simons ]; }; } |