Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

textidote: init at 0.8.3 #321054

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12310,6 +12310,13 @@
githubId = 1809783;
name = "Marco Maggesi";
};
magneticflux- = {
email = "skaggsm333@gmail.com";
github = "magneticflux-";
githubId = 9124288;
name = "Mitchell Skaggs";
keys = [ { fingerprint = "CA2A 3324 43A7 BD99 8FCE DFC4 4EB0 FECB 84AE 8967"; } ];
};
magnetophon = {
email = "bart@magnetophon.nl";
github = "magnetophon";
Expand Down
121 changes: 121 additions & 0 deletions pkgs/by-name/te/textidote/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
{
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
jdk
makeWrapper
stripJavaArchivesHook
];
Comment on lines +65 to +70
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
nativeBuildInputs = [
ant
jdk
makeWrapper
stripJavaArchivesHook
];
nativeBuildInputs = [
ant
makeWrapper
stripJavaArchivesHook
];
buildInputs = [
jdk
];

Otherwise it doesn't build with strictDeps = true.


# `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;
};
})