diff --git a/.github/workflows/ci-all.yaml b/.github/workflows/ci-all.yaml index b0ddbad3495a..53978ed31d1b 100644 --- a/.github/workflows/ci-all.yaml +++ b/.github/workflows/ci-all.yaml @@ -98,6 +98,14 @@ jobs: - name: Checkout uses: actions/checkout@v7 + - name: Setup Java + if: ${{ inputs.phing_task_phpunit }} + uses: actions/setup-java@v6 + with: + # Solr 10 requires Java 21 or later. + distribution: temurin + java-version: '21' + - name: Configure Apache for PHP ${{ matrix.php-version }} if: ${{ inputs.phing_task_phpunit }} run: | diff --git a/.gitignore b/.gitignore index 4a567fee1e2e..c26c327fd5a8 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ /downloads /Gruntfile.local.js /solr/vendor +# Generated at startup by solr.sh (see solr.sh for details) +/solr/vufind/biblio/lib/ /themes/minktest /vendor ChangeLog diff --git a/build.xml b/build.xml index cfa67390022b..e80d1140dd8e 100644 --- a/build.xml +++ b/build.xml @@ -52,7 +52,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/import-marc.sh b/import-marc.sh index 554273bcc047..dd1612a170a4 100755 --- a/import-marc.sh +++ b/import-marc.sh @@ -172,6 +172,10 @@ if [ $REGENERATE_SOLRJ_DIR -eq 1 ] then for file in $VUFIND_HOME/solr/vendor/server/solr-webapp/webapp/WEB-INF/lib/solr*.jar $VUFIND_HOME/solr/vendor/server/solr-webapp/webapp/WEB-INF/lib/http*.jar do + # Newer Solr versions (10 and later) no longer ship http*.jar files in the + # webapp, so an unmatched glob pattern would be passed through literally by + # the shell; only link files that actually exist. + [ -e "$file" ] || continue ln -s $file $SOLRJ_DIR/`basename "$file"` done fi diff --git a/import/browse-indexing.jar b/import/browse-indexing.jar index e4158b9406c9..6a2743d0be7d 100644 Binary files a/import/browse-indexing.jar and b/import/browse-indexing.jar differ diff --git a/import/solrmarc_core_3.5.jar b/import/solrmarc_core_3.5.jar index b6bf536bdf49..fe301d779573 100644 Binary files a/import/solrmarc_core_3.5.jar and b/import/solrmarc_core_3.5.jar differ diff --git a/solr.sh b/solr.sh index 61da67955471..4aafc2021e1c 100755 --- a/solr.sh +++ b/solr.sh @@ -97,4 +97,33 @@ then fi export SOLR_LOGS_DIR=$SOLR_LOGS_DIR -"$SOLR_BIN/solr" "$1" ${SOLR_ADDITIONAL_START_OPTIONS} --port "$SOLR_PORT" --solr-home "$SOLR_HOME" -m "$SOLR_HEAP" --user-managed --jvm-opts "-Ddisable.configEdit=true -Dsolr.log=$SOLR_LOGS_DIR -Dsolr.config.lib.enabled=true $SOLR_ADDITIONAL_JVM_OPTIONS" + +# The biblio core needs several jars on its classpath. Solr 10 no longer +# supports entries in solrconfig.xml, and the core lib/ directory only +# picks up jar files directly inside it (not subdirectories). We therefore +# (re)generate the lib/ symlinks on every start, from: +# - the stable jars checked into the VuFind repo, and +# - the "analysis-extras" module (e.g. ICU4J for the browse normalizers). +# Every symlink in lib/ is regenerated, so the directory is a pure runtime +# artifact (git-ignored) and self-heals across Solr upgrades. +BIBLIO_LIB="$SOLR_HOME/biblio/lib" +mkdir -p "$BIBLIO_LIB" +for link in "$BIBLIO_LIB"/* +do + [ -L "$link" ] && rm -f "$link" +done +for jar in "$SOLR_HOME/jars"/*.jar \ + "$VUFIND_HOME/import"/solrmarc_core_*.jar \ + "$VUFIND_HOME/import/lib"/marc4j-*.jar +do + [ -e "$jar" ] && ln -sf "$jar" "$BIBLIO_LIB/" +done +if [ -d "$VUFIND_HOME/solr/vendor/modules/analysis-extras/lib" ] +then + for jar in "$VUFIND_HOME/solr/vendor/modules/analysis-extras/lib"/*.jar + do + ln -sf "$jar" "$BIBLIO_LIB/" + done +fi + +"$SOLR_BIN/solr" "$1" ${SOLR_ADDITIONAL_START_OPTIONS} --port "$SOLR_PORT" --solr-home "$SOLR_HOME" -m "$SOLR_HEAP" --user-managed --jvm-opts "-Ddisable.configEdit=true -Dsolr.log=$SOLR_LOGS_DIR $SOLR_ADDITIONAL_JVM_OPTIONS" diff --git a/solr/vufind/authority/conf/solrconfig.xml b/solr/vufind/authority/conf/solrconfig.xml index 869a2eeea0b6..87be58bc08d3 100644 --- a/solr/vufind/authority/conf/solrconfig.xml +++ b/solr/vufind/authority/conf/solrconfig.xml @@ -32,7 +32,7 @@ that you fully re-index after changing this setting as it can affect both how text is indexed and queried. --> - 9.11 + 10.3.2 diff --git a/solr/vufind/biblio/conf/solrconfig.xml b/solr/vufind/biblio/conf/solrconfig.xml index 7cb971ba81d2..d1eca6400506 100644 --- a/solr/vufind/biblio/conf/solrconfig.xml +++ b/solr/vufind/biblio/conf/solrconfig.xml @@ -32,7 +32,7 @@ that you fully re-index after changing this setting as it can affect both how text is indexed and queried. --> - 9.11 + 10.3.2 @@ -42,11 +42,6 @@ If replication is in use, this should match the replication configuration. --> ${solr.solr.home:./solr}/biblio - - - - - false diff --git a/solr/vufind/jars/browse-handler.jar b/solr/vufind/jars/browse-handler.jar index 9748577147cd..dad7db3b13f8 100644 Binary files a/solr/vufind/jars/browse-handler.jar and b/solr/vufind/jars/browse-handler.jar differ diff --git a/solr/vufind/reserves/conf/solrconfig.xml b/solr/vufind/reserves/conf/solrconfig.xml index 125edaee91e1..d3ee476a0577 100644 --- a/solr/vufind/reserves/conf/solrconfig.xml +++ b/solr/vufind/reserves/conf/solrconfig.xml @@ -32,7 +32,7 @@ that you fully re-index after changing this setting as it can affect both how text is indexed and queried. --> - 9.11 + 10.3.2 diff --git a/solr/vufind/solr.xml b/solr/vufind/solr.xml index e247452da4d6..6102393a7c55 100644 --- a/solr/vufind/solr.xml +++ b/solr/vufind/solr.xml @@ -32,13 +32,8 @@ ${host:} ${jetty.port:8983} - ${hostContext:solr} - - ${genericCoreNodeNames:true} ${zkClientTimeout:30000} - ${distribUpdateSoTimeout:600000} - ${distribUpdateConnTimeout:60000} diff --git a/solr/vufind/website/conf/solrconfig.xml b/solr/vufind/website/conf/solrconfig.xml index 67252bfae6ad..3ee484735efb 100644 --- a/solr/vufind/website/conf/solrconfig.xml +++ b/solr/vufind/website/conf/solrconfig.xml @@ -32,7 +32,7 @@ that you fully re-index after changing this setting as it can affect both how text is indexed and queried. --> - 9.11 + 10.3.2