Skip to content

Commit

Permalink
Merge pull request NixOS#250204 from JaviMerino/guilt
Browse files Browse the repository at this point in the history
guilt: init at 0.37-rc1
  • Loading branch information
matthiasbeyer authored Nov 8, 2023
2 parents 3714f48 + 9288bd0 commit 64b6e49
Show file tree
Hide file tree
Showing 5 changed files with 135 additions and 0 deletions.
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7998,6 +7998,12 @@
githubId = 488556;
name = "Javier Aguirre";
};
javimerino = {
email = "merino.jav@gmail.com";
name = "Javi Merino";
github = "JaviMerino";
githubId = 44926;
};
jayesh-bhoot = {
name = "Jayesh Bhoot";
email = "jb@jayeshbhoot.com";
Expand Down
20 changes: 20 additions & 0 deletions pkgs/applications/version-management/guilt/darwin-fix.patch
Original file line number Diff line number Diff line change
@@ -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"
92 changes: 92 additions & 0 deletions pkgs/applications/version-management/guilt/default.nix
Original file line number Diff line number Diff line change
@@ -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;
};
}
15 changes: 15 additions & 0 deletions pkgs/applications/version-management/guilt/guilt-help-mandir.patch
Original file line number Diff line number Diff line change
@@ -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"

2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2506,6 +2506,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 { };
Expand Down

0 comments on commit 64b6e49

Please sign in to comment.