Skip to content

Commit

Permalink
textidote: init at 0.8.3
Browse files Browse the repository at this point in the history
Co-authored-by: éclairevoyant <[email protected]>
Co-authored-by: Anderson Torres <[email protected]>
Co-authored-by: Arne Keller <[email protected]>
  • Loading branch information
4 people committed Dec 21, 2024
1 parent 4d2013a commit c358956
Showing 1 changed file with 124 additions and 0 deletions.
124 changes: 124 additions & 0 deletions pkgs/by-name/te/textidote/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
{
lib,
stdenv,
fetchFromGitHub,
ant,
jdk11,
makeWrapper,
stripJavaArchivesHook,
testers,
}:

let
pname = "textidote";
version = "0.8.3";
# We can't compile with > Java 11 yet because that's the last version that supports targeting Java 6
jdk = jdk11;

# Manually create a fixed-output derivation to populate the dependencies for the rest of the build
# The Ant buildscript downloads dependencies and stores them alongside the source code in a non-standard way
# https://github.com/sylvainhalle/AntRun
populated-src = stdenv.mkDerivation {
pname = "textidote-populated-src";
inherit version;

src = fetchFromGitHub {
owner = "sylvainhalle";
repo = "textidote";
rev = "refs/tags/v${version}";
hash = "sha256-QMSoxk5jDn6qsdxffXJ/S4eTIzLjJdAEbdaK8MZIavI=";
};

nativeBuildInputs = [
ant
jdk
];

# Only run dependency-downloading tasks here to pre-download the dependencies for later
buildPhase = ''
runHook preBuild
ant download-deps junit jacoco
runHook postBuild
'';

# Copy the entire directory to the output including sources and resolved dependencies
installPhase = ''
runHook preInstall
cp -a . $out
runHook postInstall
'';

dontFixup = true;
outputHashMode = "recursive";
outputHash = "sha256-LrFClt8zN/ma42+Yoqwoy03TCuC3JfAeb02vehkljBo=";
};
in
stdenv.mkDerivation (finalAttrs: {
inherit pname version;

src = populated-src;

nativeBuildInputs = [
ant
makeWrapper
stripJavaArchivesHook
];

buildInputs = [
jdk
];

# `javac` encoding only defaults to UTF-8 after Java 18
env.ANT_OPTS = "-Dfile.encoding=utf8";

buildPhase = ''
runHook preBuild
ant jar
runHook postBuild
'';

doCheck = true;
checkPhase = ''
runHook preCheck
ant test
runHook postCheck
'';

# Recreates the wrapper from the `.deb`
# The `.deb` seems to be manually created for every release; there's no script in the repo
installPhase = ''
runHook preInstall
install -Dm644 textidote.jar $out/share/textidote/textidote.jar
makeWrapper ${lib.getExe jdk} $out/bin/textidote \
--add-flags "-jar $out/share/textidote/textidote.jar --name textidote"
runHook postInstall
'';

passthru.tests = {
version = testers.testVersion {
package = finalAttrs.finalPackage;
version = "TeXtidote v${finalAttrs.version}";
};
};

meta = {
homepage = "https://sylvainhalle.github.io/textidote/";
downloadPage = "https://github.com/sylvainhalle/textidote/releases";
description = "Correction tool for LaTeX documents";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ magneticflux- ];
mainProgram = "textidote";
inherit (jdk.meta) platforms;
};
})

0 comments on commit c358956

Please sign in to comment.