diff --git a/pkgs/applications/version-management/guilt/darwin-fix.patch b/pkgs/applications/version-management/guilt/darwin-fix.patch new file mode 100644 index 000000000000..54c11059be64 --- /dev/null +++ b/pkgs/applications/version-management/guilt/darwin-fix.patch @@ -0,0 +1,20 @@ +uname -s is used to determine the differences between the command line +utilities like stat or awk in linux and darwin. However, in nix, guilt +will be using the nix versions of this programs, not the ones +installed in the system. Therefore, guilt should use the command-line +parameters that the linux forms of these commands expect, even if it +is being run on Darwin. + +diff --git a/guilt b/guilt +index bf50343..cfc9332 100755 +--- a/guilt ++++ b/guilt +@@ -986,7 +986,7 @@ guards_file="$GUILT_DIR/$branch/guards" + pager="more" + [ ! -z "$PAGER" ] && pager="$PAGER" + +-UNAME_S=`uname -s` ++UNAME_S="Linux" + + if [ -r "$GUILT_PATH/os.$UNAME_S" ]; then + . "$GUILT_PATH/os.$UNAME_S" diff --git a/pkgs/applications/version-management/guilt/default.nix b/pkgs/applications/version-management/guilt/default.nix new file mode 100644 index 000000000000..664db771e93f --- /dev/null +++ b/pkgs/applications/version-management/guilt/default.nix @@ -0,0 +1,92 @@ +{ asciidoc +, docbook_xml_dtd_45 +, docbook_xsl +, fetchFromGitHub +, gawk +, git +, gnused +, lib +, makeWrapper +, openssl +, perl +, stdenv +, xmlto +}: + +stdenv.mkDerivation rec { + pname = "guilt"; + version = "0.37-rc1"; + + src = fetchFromGitHub { + owner = "jeffpc"; + repo = "guilt"; + rev = "v${version}"; + sha256 = "sha256-7OgRbMGYWtGvrZxKfJe0CkpmU3AUkPebF5NyTsfXeGA="; + }; + + doCheck = true; + + patches = [ + ./guilt-help-mandir.patch + ./darwin-fix.patch + ]; + nativeBuildInputs = [ + asciidoc + docbook_xml_dtd_45 + docbook_xsl + makeWrapper + perl + xmlto + ]; + buildInputs = [ + gawk + git + gnused + ] ++ lib.optionals stdenv.isDarwin [ openssl ]; + makeFlags = [ + "PREFIX=$(out)" + ]; + + postBuild = '' + make -j $NIX_BUILD_CORES doc + ''; + + preCheck = '' + patchShebangs regression/run-tests regression/*.sh + ''; + + postInstall = '' + make PREFIX=$out install-doc + ''; + + postFixup = '' + wrapProgram $out/bin/guilt --prefix PATH : ${lib.makeBinPath buildInputs} + ''; + + meta = with lib; { + description = "Manage patches like quilt, on top of a git repository"; + longDescription = '' + Andrew Morton originally developed a set of scripts for + maintaining kernel patches outside of any SCM tool. Others + extended these into a suite called quilt]. The basic idea behind + quilt is to maintain patches instead of maintaining source + files. Patches can be added, removed or reordered, and they can + be refreshed as you fix bugs or update to a new base + revision. quilt is very powerful, but it is not integrated with + the underlying SCM tools. This makes it difficult to visualize + your changes. + + Guilt allows one to use quilt functionality on top of a Git + repository. Changes are maintained as patches which are + committed into Git. Commits can be removed or reordered, and the + underlying patch can be refreshed based on changes made in the + working directory. The patch directory can also be placed under + revision control, so you can have a separate history of changes + made to your patches. + ''; + homepage = "https://github.com/jeffpc/guilt"; + maintainers = with lib.maintainers; [ javimerino ]; + license = [ licenses.gpl2 ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/version-management/guilt/guilt-help-mandir.patch b/pkgs/applications/version-management/guilt/guilt-help-mandir.patch new file mode 100644 index 000000000000..54f1149f291e --- /dev/null +++ b/pkgs/applications/version-management/guilt/guilt-help-mandir.patch @@ -0,0 +1,15 @@ +nixpkgs' post-installation fixup moves the pages to share/man. Tell guilt-help so that it can find them. + +diff --git a/guilt-help b/guilt-help +index 93442a3..b29e059 100755 +--- a/guilt-help ++++ b/guilt-help +@@ -34,7 +34,7 @@ case $# in + ;; + esac + +-MANDIR=`dirname $0`/../man ++MANDIR=`dirname $0`/../share/man + MANDIR=`(cd "$MANDIR"; pwd)` + exec man -M "$MANDIR" "$page" + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 44986968eea2..0c866fae68b4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2446,6 +2446,8 @@ with pkgs; gst = callPackage ../applications/version-management/gst { }; + guilt = callPackage ../applications/version-management/guilt { }; + gut = callPackage ../applications/version-management/gut { }; hred = callPackage ../development/tools/hred { };