Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 stdenvNoCC, 4 fetchurl, 5 unzip, 6 jre, 7 jre8, 8 genericUpdater, 9 writeShellScript, 10 makeWrapper, 11 common-updater-scripts, 12 gnused, 13}: 14 15let 16 inherit (lib.versions) major majorMinor splitVersion; 17 inherit (lib.strings) concatStringsSep versionAtLeast; 18 19 common = 20 { 21 pname, 22 version, 23 src, 24 description, 25 java ? jre, 26 prog ? null, 27 jar ? null, 28 license ? lib.licenses.mpl20, 29 updateScript ? null, 30 }: 31 stdenvNoCC.mkDerivation ( 32 finalAttrs: 33 let 34 mainProgram = if prog == null then pname else prog; 35 jar' = if jar == null then pname else jar; 36 in 37 { 38 inherit pname version src; 39 40 nativeBuildInputs = [ 41 unzip 42 makeWrapper 43 ]; 44 45 sourceRoot = "."; 46 47 installPhase = '' 48 runHook preInstall 49 50 install -Dm444 -t $out/share/java/ *.jar 51 mv doc $out/share 52 53 mkdir -p $out/bin 54 makeWrapper ${lib.getExe jre} $out/bin/${mainProgram} \ 55 --add-flags "-jar $out/share/java/${jar'}.jar" 56 '' 57 + lib.optionalString (versionAtLeast finalAttrs.version "11") '' 58 mv lib $out/share/java 59 '' 60 + lib.optionalString (versionAtLeast finalAttrs.version "8") '' 61 makeWrapper ${lib.getExe jre} $out/bin/transform \ 62 --add-flags "-cp $out/share/java/${jar'}.jar net.sf.saxon.Transform" 63 64 makeWrapper ${lib.getExe jre} $out/bin/query \ 65 --add-flags "-cp $out/share/java/${jar'}.jar net.sf.saxon.Query" 66 '' 67 + "runHook postInstall"; 68 69 passthru = lib.optionalAttrs (updateScript != null) { 70 inherit updateScript; 71 }; 72 73 meta = with lib; { 74 inherit description license mainProgram; 75 homepage = 76 if versionAtLeast finalAttrs.version "11" then 77 "https://www.saxonica.com/products/latest.xml" 78 else 79 "https://www.saxonica.com/products/archive.xml"; 80 sourceProvenance = with sourceTypes; [ binaryBytecode ]; 81 maintainers = with maintainers; [ rvl ]; 82 platforms = platforms.all; 83 }; 84 } 85 ); 86 87 # Saxon release zipfiles and tags often use dashes instead of dots. 88 dashify = version: concatStringsSep "-" (splitVersion version); 89 90 # SaxonJ-HE release files are pushed to the Saxon-HE GitHub repository. 91 # They are also available from Maven. 92 # 93 # Older releases were uploaded to SourceForge. They are also 94 # available from the Saxon-Archive GitHub repository. 95 github = { 96 updateScript = 97 version: 98 genericUpdater { 99 versionLister = writeShellScript "saxon-he-versionLister" '' 100 export PATH="${ 101 lib.makeBinPath [ 102 common-updater-scripts 103 gnused 104 ] 105 }:$PATH" 106 major_ver="${major version}" 107 list-git-tags --url="https://github.com/Saxonica/Saxon-HE.git" \ 108 | sed -En \ 109 -e "s/SaxonHE([0-9]+)-([0-9]+)/\1.\2/" \ 110 -e "/^''${major_ver:-[0-9]+}\./p" 111 ''; 112 }; 113 114 downloadUrl = 115 version: 116 let 117 tag = "SaxonHE${dashify version}"; 118 filename = "${major version}/Java/${tag}J.zip"; 119 in 120 "https://raw.githubusercontent.com/Saxonica/Saxon-HE/${tag}/${filename}"; 121 }; 122 123in 124{ 125 saxon = common rec { 126 pname = "saxon"; 127 version = "6.5.3"; 128 src = fetchurl { 129 url = "mirror://sourceforge/saxon/saxon${dashify version}.zip"; 130 hash = "sha256-Q28wzqyUCPBJ2C3a8acdG2lmeee8GeEAgg9z8oUfvlA="; 131 }; 132 description = "XSLT 1.0 processor"; 133 # https://saxon.sourceforge.net/saxon6.5.3/conditions.html 134 license = lib.licenses.mpl10; 135 java = jre8; 136 }; 137 138 saxonb_8_8 = common rec { 139 pname = "saxonb"; 140 version = "8.8"; 141 jar = "saxon8"; 142 src = fetchurl { 143 url = "mirror://sourceforge/saxon/saxonb${dashify version}j.zip"; 144 hash = "sha256-aOk+BB5kAbZElAifVG+AP1bo7Se3patzISA40bzLf5U="; 145 }; 146 description = "Complete and conformant processor of XSLT 2.0, XQuery 1.0, and XPath 2.0"; 147 java = jre8; 148 }; 149 150 saxonb_9_1 = common rec { 151 pname = "saxonb"; 152 version = "9.1.0.8"; 153 jar = "saxon9"; 154 src = fetchurl { 155 url = "mirror://sourceforge/saxon/Saxon-B/${version}/saxonb${dashify version}j.zip"; 156 sha256 = "1d39jdnwr3v3pzswm81zry6yikqlqy9dp2l2wmpqdiw00r5drg4j"; 157 }; 158 description = "Complete and conformant processor of XSLT 2.0, XQuery 1.0, and XPath 2.0"; 159 }; 160 161 # Saxon-HE (home edition) replaces Saxon-B as the open source 162 # version of the Saxon XSLT and XQuery processor. 163 saxon_9-he = common rec { 164 pname = "saxon-he"; 165 version = "9.9.0.1"; 166 jar = "saxon9he"; 167 src = fetchurl { 168 url = "mirror://sourceforge/saxon/Saxon-HE/${majorMinor version}/SaxonHE${dashify version}J.zip"; 169 sha256 = "1inxd7ia7rl9fxfrw8dy9sb7rqv76ipblaki5262688wf2dscs60"; 170 }; 171 description = "Processor for XSLT 3.0, XPath 2.0 and 3.1, and XQuery 3.1"; 172 }; 173 174 saxon_11-he = common rec { 175 pname = "saxon-he"; 176 version = "11.7"; 177 jar = "saxon-he-${version}"; 178 src = fetchurl { 179 url = github.downloadUrl version; 180 sha256 = "MGzhUW9ZLVvTSqEdpAZWAiwTYxCZxbn26zESDmIe4Vo="; 181 }; 182 updateScript = github.updateScript version; 183 description = "Processor for XSLT 3.0, XPath 2.0 and 3.1, and XQuery 3.1"; 184 }; 185 186 saxon_12-he = common rec { 187 pname = "saxon-he"; 188 version = "12.8"; 189 jar = "saxon-he-${version}"; 190 src = fetchurl { 191 url = github.downloadUrl version; 192 hash = "sha256-K6hRrseSW4giCBgsSMk2IwIF1VjjNWNrvkZia9gANZg="; 193 }; 194 updateScript = github.updateScript version; 195 description = "Processor for XSLT 3.0, XPath 3.1, and XQuery 3.1"; 196 }; 197}