about summary refs log tree commit diff
path: root/pkgs/applications/version-management/cgit
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2022-12-19 08:46:57 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2022-12-19 15:05:22 -0300
commitd994dabacef6a7e13a41d144cd6d800f8e21a11f (patch)
tree04bf3d99d27800b95686feef4000e7794e2df375 /pkgs/applications/version-management/cgit
parentb10a520017ac319c1e57b07742efd2bcc918d160 (diff)
downloadnixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.tar
nixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.tar.gz
nixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.tar.bz2
nixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.tar.lz
nixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.tar.xz
nixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.tar.zst
nixlib-d994dabacef6a7e13a41d144cd6d800f8e21a11f.zip
treewide: remove git-and-tools directory
We do not use a "plugin system" for Git addons anymore, and therefore this
directory is no longer useful. Indeed that directory is way more confusing,
given that it includes more than mere Git addons, going from Bitbucket server
command-line tools to complete rewrites of Git in exotic programming languages.

Also, without this directory, the mental load of decision-making reduces a lot.
When anyone is interested in including a new git-related tool, just put it into
pkgs/applications/version-management, without apologies.
Diffstat (limited to 'pkgs/applications/version-management/cgit')
-rw-r--r--pkgs/applications/version-management/cgit/common.nix79
-rw-r--r--pkgs/applications/version-management/cgit/default.nix25
-rw-r--r--pkgs/applications/version-management/cgit/pink.nix23
3 files changed, 127 insertions, 0 deletions
diff --git a/pkgs/applications/version-management/cgit/common.nix b/pkgs/applications/version-management/cgit/common.nix
new file mode 100644
index 000000000000..0cbc04b7bcc2
--- /dev/null
+++ b/pkgs/applications/version-management/cgit/common.nix
@@ -0,0 +1,79 @@
+{ pname, version, src, gitSrc, buildInputs ? []
+, homepage, description, maintainers
+}:
+
+{ lib, stdenv, openssl, zlib, asciidoc, libxml2, libxslt
+, docbook_xsl, pkg-config
+, coreutils, gnused, groff, docutils
+, gzip, bzip2, lzip, xz, zstd
+, python3Packages
+}:
+
+stdenv.mkDerivation {
+  inherit pname version src gitSrc;
+
+  nativeBuildInputs = [
+    pkg-config asciidoc
+  ] ++ (with python3Packages; [ python wrapPython ]);
+  buildInputs = buildInputs ++ [
+    openssl zlib libxml2 libxslt docbook_xsl
+  ];
+  pythonPath = with python3Packages; [ pygments markdown ];
+
+  postPatch = ''
+    sed -e 's|"gzip"|"${gzip}/bin/gzip"|' \
+        -e 's|"bzip2"|"${bzip2.bin}/bin/bzip2"|' \
+        -e 's|"lzip"|"${lzip}/bin/lzip"|' \
+        -e 's|"xz"|"${xz.bin}/bin/xz"|' \
+        -e 's|"zstd"|"${zstd}/bin/zstd"|' \
+        -i ui-snapshot.c
+
+    substituteInPlace filters/html-converters/man2html \
+      --replace 'groff' '${groff}/bin/groff'
+
+    substituteInPlace filters/html-converters/rst2html \
+      --replace 'rst2html.py' '${docutils}/bin/rst2html.py'
+  '';
+
+  # Give cgit a git source tree and pass configuration parameters (as make
+  # variables).
+  preBuild = ''
+    mkdir -p git
+    tar --strip-components=1 -xf "$gitSrc" -C git
+  '';
+
+  makeFlags = [
+    "prefix=$(out)"
+    "CGIT_SCRIPT_PATH=$(out)/cgit/"
+    "CC=${stdenv.cc.targetPrefix}cc"
+    "AR=${stdenv.cc.targetPrefix}ar"
+  ];
+
+  # Install manpage.
+  postInstall = ''
+    # xmllint fails:
+    #make install-man
+
+    # bypassing xmllint works:
+    a2x --no-xmllint -f manpage cgitrc.5.txt
+    mkdir -p "$out/share/man/man5"
+    cp cgitrc.5 "$out/share/man/man5"
+
+    wrapPythonProgramsIn "$out/lib/cgit/filters" "$out $pythonPath"
+
+    for script in $out/lib/cgit/filters/*.sh $out/lib/cgit/filters/html-converters/txt2html; do
+      wrapProgram $script --prefix PATH : '${lib.makeBinPath [ coreutils gnused ]}'
+    done
+  '';
+
+  stripDebugList = [ "cgit" ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    inherit homepage description;
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = maintainers ++ (with lib.maintainers; [ qyliss ]);
+  };
+}
diff --git a/pkgs/applications/version-management/cgit/default.nix b/pkgs/applications/version-management/cgit/default.nix
new file mode 100644
index 000000000000..f6a0af102303
--- /dev/null
+++ b/pkgs/applications/version-management/cgit/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchurl, callPackage, luajit }:
+
+callPackage (import ./common.nix rec {
+  pname = "cgit";
+  version = "1.2.3";
+
+  src = fetchurl {
+    url = "https://git.zx2c4.com/cgit/snapshot/${pname}-${version}.tar.xz";
+    sha256 = "193d990ym10qlslk0p8mjwp2j6rhqa7fq0y1iff65lvbyv914pss";
+  };
+
+  # cgit is tightly coupled with git and needs a git source tree to build.
+  # IMPORTANT: Remember to check which git version cgit needs on every version
+  # bump (look for "GIT_VER" in the top-level Makefile).
+  gitSrc = fetchurl {
+    url    = "mirror://kernel/software/scm/git/git-2.25.1.tar.xz";
+    sha256 = "09lzwa183nblr6l8ib35g2xrjf9wm9yhk3szfvyzkwivdv69c9r2";
+  };
+
+  buildInputs = [ luajit ];
+
+  homepage = "https://git.zx2c4.com/cgit/about/";
+  description = "Web frontend for git repositories";
+  maintainers = with lib.maintainers; [ bjornfor ];
+}) {}
diff --git a/pkgs/applications/version-management/cgit/pink.nix b/pkgs/applications/version-management/cgit/pink.nix
new file mode 100644
index 000000000000..73523a2d77af
--- /dev/null
+++ b/pkgs/applications/version-management/cgit/pink.nix
@@ -0,0 +1,23 @@
+{ lib, fetchurl, callPackage }:
+
+callPackage (import ./common.nix rec {
+  pname = "cgit-pink";
+  version = "1.4.1";
+
+  src = fetchurl {
+    url = "https://git.causal.agency/cgit-pink/snapshot/cgit-pink-${version}.tar.gz";
+    sha256 = "1ma6j3r4ba5fhd47pc6xn5bmxaqr8ci2pvky9v100n1hh5n6q97i";
+  };
+
+  # cgit-pink is tightly coupled with git and needs a git source tree to build.
+  # IMPORTANT: Remember to check which git version cgit-pink needs on every
+  # version bump (look for "GIT_VER" in the top-level Makefile).
+  gitSrc = fetchurl {
+    url    = "mirror://kernel/software/scm/git/git-2.36.1.tar.xz";
+    sha256 = "0w43a35mhc2qf2gjkxjlnkf2lq8g0snf34iy5gqx2678yq7llpa0";
+  };
+
+  homepage = "https://git.causal.agency/cgit-pink/about/";
+  description = "cgit fork aiming for better maintenance";
+  maintainers = with lib.maintainers; [ sternenseemann ];
+}) {}