From ee7565af9d811526b4abd33c900104cb514c25e1 Mon Sep 17 00:00:00 2001 From: Aaron Andersen Date: Thu, 28 Mar 2019 10:47:41 -0400 Subject: [PATCH] solr: init at 8.0.0 --- nixos/doc/manual/release-notes/rl-1909.xml | 15 +++ nixos/modules/services/search/solr.nix | 12 ++- nixos/tests/solr.nix | 108 ++++++++++++--------- pkgs/servers/search/solr/8.x.nix | 35 +++++++ pkgs/top-level/all-packages.nix | 4 +- 5 files changed, 126 insertions(+), 48 deletions(-) create mode 100644 pkgs/servers/search/solr/8.x.nix diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml index 2fef14e6a805..43946ba6df2a 100644 --- a/nixos/doc/manual/release-notes/rl-1909.xml +++ b/nixos/doc/manual/release-notes/rl-1909.xml @@ -147,6 +147,21 @@ Accelerated Video Playback for better transcoding performance. + + + The following changes apply if the stateVersion is + changed to 19.09 or higher. For stateVersion = "19.03" + or lower the old behavior is preserved. + + + + + solr.package defaults to + pkgs.solr_8. + + + + diff --git a/nixos/modules/services/search/solr.nix b/nixos/modules/services/search/solr.nix index 7200c40e89f7..6659cc8a2d1e 100644 --- a/nixos/modules/services/search/solr.nix +++ b/nixos/modules/services/search/solr.nix @@ -13,11 +13,19 @@ in services.solr = { enable = mkEnableOption "Enables the solr service."; + # default to the 8.x series not forcing major version upgrade of those on the 7.x series package = mkOption { type = types.package; - default = pkgs.solr; + default = if versionAtLeast config.system.stateVersion "19.09" + then pkgs.solr_8 + else pkgs.solr_7 + ; defaultText = "pkgs.solr"; - description = "Which Solr package to use."; + description = '' + Which Solr package to use. This defaults to version 7.x if + system.stateVersion < 19.09 and version 8.x + otherwise. + ''; }; port = mkOption { diff --git a/nixos/tests/solr.nix b/nixos/tests/solr.nix index 9ba3863411ea..2108e851bc59 100644 --- a/nixos/tests/solr.nix +++ b/nixos/tests/solr.nix @@ -1,47 +1,65 @@ -import ./make-test.nix ({ pkgs, lib, ... }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; +with pkgs.lib; + +let + solrTest = package: makeTest { + machine = + { config, pkgs, ... }: + { + # Ensure the virtual machine has enough memory for Solr to avoid the following error: + # + # OpenJDK 64-Bit Server VM warning: + # INFO: os::commit_memory(0x00000000e8000000, 402653184, 0) + # failed; error='Cannot allocate memory' (errno=12) + # + # There is insufficient memory for the Java Runtime Environment to continue. + # Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory. + virtualisation.memorySize = 2000; + + services.solr.enable = true; + services.solr.package = package; + }; + + testScript = '' + startAll; + + $machine->waitForUnit('solr.service'); + $machine->waitForOpenPort('8983'); + $machine->succeed('curl --fail http://localhost:8983/solr/'); + + # adapted from pkgs.solr/examples/films/README.txt + $machine->succeed('sudo -u solr solr create -c films'); + $machine->succeed(q(curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{ + "add-field" : { + "name":"name", + "type":"text_general", + "multiValued":false, + "stored":true + }, + "add-field" : { + "name":"initial_release_date", + "type":"pdate", + "stored":true + } + }')) =~ /"status":0/ or die; + $machine->succeed('sudo -u solr post -c films ${pkgs.solr}/example/films/films.json'); + $machine->succeed('curl http://localhost:8983/solr/films/query?q=name:batman') =~ /"name":"Batman Begins"/ or die; + ''; + }; +in { - name = "solr"; - meta.maintainers = [ lib.maintainers.aanderse ]; + solr_7 = solrTest pkgs.solr_7 // { + name = "solr_7"; + meta.maintainers = [ lib.maintainers.aanderse ]; + }; - machine = - { config, pkgs, ... }: - { - # Ensure the virtual machine has enough memory for Solr to avoid the following error: - # - # OpenJDK 64-Bit Server VM warning: - # INFO: os::commit_memory(0x00000000e8000000, 402653184, 0) - # failed; error='Cannot allocate memory' (errno=12) - # - # There is insufficient memory for the Java Runtime Environment to continue. - # Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory. - virtualisation.memorySize = 2000; - - services.solr.enable = true; - }; - - testScript = '' - startAll; - - $machine->waitForUnit('solr.service'); - $machine->waitForOpenPort('8983'); - $machine->succeed('curl --fail http://localhost:8983/solr/'); - - # adapted from pkgs.solr/examples/films/README.txt - $machine->succeed('sudo -u solr solr create -c films'); - $machine->succeed(q(curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{ - "add-field" : { - "name":"name", - "type":"text_general", - "multiValued":false, - "stored":true - }, - "add-field" : { - "name":"initial_release_date", - "type":"pdate", - "stored":true - } - }')) =~ /"status":0/ or die; - $machine->succeed('sudo -u solr post -c films ${pkgs.solr}/example/films/films.json'); - $machine->succeed('curl http://localhost:8983/solr/films/query?q=name:batman') =~ /"name":"Batman Begins"/ or die; - ''; -}) + solr_8 = solrTest pkgs.solr_8 // { + name = "solr_8"; + meta.maintainers = [ lib.maintainers.aanderse ]; + }; +} diff --git a/pkgs/servers/search/solr/8.x.nix b/pkgs/servers/search/solr/8.x.nix new file mode 100644 index 000000000000..00821e6e40ae --- /dev/null +++ b/pkgs/servers/search/solr/8.x.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, jre, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "solr"; + version = "8.0.0"; + + src = fetchurl { + url = "mirror://apache/lucene/solr/${version}/solr-${version}.tgz"; + sha256 = "04hxj7nfmbh5wfqkq1p5q2ncxszwm80l218vfdy93aw0p79r4qqf"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out $out/bin + + cp -r bin/solr bin/post $out/bin/ + cp -r contrib $out/ + cp -r dist $out/ + cp -r example $out/ + cp -r server $out/ + + wrapProgram $out/bin/solr --set JAVA_HOME "${jre}" + wrapProgram $out/bin/post --set JAVA_HOME "${jre}" + ''; + + meta = with stdenv.lib; { + homepage = https://lucene.apache.org/solr/; + description = "Open source enterprise search platform from the Apache Lucene project"; + license = licenses.asl20; + platforms = platforms.all; + maintainers = [ maintainers.rickynils maintainers.domenkozar maintainers.aanderse ]; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d66a2c778d66..b86b439379ac 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5646,7 +5646,9 @@ in inherit (darwin.apple_sdk.frameworks) Security; }; - solr = callPackage ../servers/search/solr { }; + solr = solr_8; + solr_7 = callPackage ../servers/search/solr { }; + solr_8 = callPackage ../servers/search/solr/8.x.nix { }; solvespace = callPackage ../applications/graphics/solvespace { };