1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
{
ant,
cacert,
fetchFromGitHub,
git,
installShellFiles,
jdk_headless,
jre_headless,
makeWrapper,
pandoc,
python3,
stdenvNoCC,
lib,
testers,
}:
let
pname = "validator-nu";
version = "25.12.12";
src = fetchFromGitHub {
owner = "validator";
repo = "validator";
rev = "7ed7f67468f7f61975dcc78891ea462fce578828";
hash = "sha256-cdDmhRyXIdoNWhP4oqu7vRb5abuNXRqvt4P4Dzq48xY=";
};
deps = stdenvNoCC.mkDerivation {
pname = "${pname}-deps";
inherit version src;
nativeBuildInputs = [
ant
cacert
jdk_headless
python3
];
postPatch = ''
substituteInPlace build/build.xml \
--replace-fail \
'src="https://html.spec.whatwg.org/"' \
'src="https://html.spec.whatwg.org/commit-snapshots/0aa021ab4f21a6550f1591a9cc98449aaea9eefa/"'
'';
buildPhase = ''
python checker.py dldeps
'';
installPhase = ''
mkdir "$out" "$out/build"
mv dependencies extras "$out"
mv build/html5spec "$out/build"
'';
outputHashMode = "recursive";
outputHash = "sha256-8cMoLeOnKNqisezkVS2UeVW11gtkGmhvQWrbSVuqbb8=";
};
in
stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname version src;
nativeBuildInputs = [
ant
installShellFiles
jdk_headless
makeWrapper
pandoc
python3
];
postPatch = ''
substituteInPlace build/build.py --replace-fail \
'validatorVersion = "%s.%s.%s" % (year, month, day)' \
'validatorVersion = "${finalAttrs.version}"'
'';
buildPhase = ''
ln -s '${deps}/dependencies' '${deps}/extras' .
ln -s '${deps}/build/html5spec' build/
JAVA_HOME='${jdk_headless}' python checker.py --offline build
make -C docs VNU_VERSION='${finalAttrs.version}' DATE='date -d @$(SOURCE_DATE_EPOCH)'
'';
installPhase = ''
runHook preInstall
mkdir -p "$out/bin" "$out/share/java"
mv build/dist/vnu.jar "$out/share/java/"
installManPage docs/*.1
makeWrapper "${jre_headless}/bin/java" "$out/bin/vnu" \
--add-flags "-jar '$out/share/java/vnu.jar'"
runHook postInstall
'';
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
};
meta = {
description = "Helps you catch problems in your HTML/CSS/SVG";
homepage = "https://validator.github.io/validator/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
andersk
];
mainProgram = "vnu";
platforms = lib.platforms.all;
sourceProvenance = with lib.sourceTypes; [
binaryBytecode
fromSource
];
};
})
|