This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 5b7135d980d700fb3b133698aa41727a1f171f20
Author: Jan Høydahl <[email protected]>
AuthorDate: Tue Aug 25 01:09:21 2026 +0200

    SOLR-18396: Stop dependency-locking the throwaway "...Copy" configurations 
(#4794)
    
    (cherry picked from commit 7669edb60eca7578aab953f293d5781b5818e83e)
---
 .github/renovate.json                 |  4 ++--
 AGENTS.md                             |  2 +-
 dev-docs/gradle-help/dependencies.txt |  5 +----
 dev-docs/lucene-upgrade.md            | 10 +++++++---
 gradle/solr/packaging.gradle          |  4 ++--
 gradle/validation/dependencies.gradle |  9 +++++++++
 gradle/validation/jar-checks.gradle   |  4 +++-
 7 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/.github/renovate.json b/.github/renovate.json
index e21907b54f3..73a766f14d1 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -9,11 +9,11 @@
   "includePaths": ["gradle/libs.versions.toml", "versions.*", "build.gradle", 
".github/workflows/*"],
   "postUpgradeTasks": {
     "commands": [
-      "./gradlew resolveAndLockAll collectJarInfos --write-locks",
+      "./gradlew resolveAndLockAll --write-locks",
       "./gradlew kotlinUpgradeYarnLock",
       "./gradlew updateLicenses"
     ],
-    "fileFilters": ["solr/licenses/*.sha1", "solr/**/gradle.lockfile"],
+    "fileFilters": ["solr/licenses/*.sha1", "**/gradle.lockfile", 
"settings-gradle.lockfile"],
     "executionMode": "branch"
   },
   "packageRules": [
diff --git a/AGENTS.md b/AGENTS.md
index c4de7aa78e5..e7e70b3420f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -8,7 +8,7 @@ While README.md and CONTRIBUTING.md are mainly written for 
humans, this file is
 - Always apply the Apache License to new source files
 - All versions must be delcared in `gradle/libs.versions.toml`, never 
build.gradle files
 - Try first declaring a dependency without a version (the version might 
already be in a BOM); and if fails to resolve _then_ specify a version
-- Always run `gradlew updateLicenses resolveAndLockAll collectJarInfos 
--write-locks` after adding or changing a dependency. See 
`dev-docs/gradle-help/dependencies.txt` for more info
+- Always run `gradlew updateLicenses resolveAndLockAll --write-locks` after 
adding or changing a dependency. See `dev-docs/gradle-help/dependencies.txt` 
for more info
 
 ## Build and Development Workflow
 
diff --git a/dev-docs/gradle-help/dependencies.txt 
b/dev-docs/gradle-help/dependencies.txt
index ce76d51da3e..a20e2595641 100644
--- a/dev-docs/gradle-help/dependencies.txt
+++ b/dev-docs/gradle-help/dependencies.txt
@@ -99,10 +99,7 @@ like when using it with "classpath [dependency]" or for 
version alignment.
 
 The next you want to update the lockfiles file using the following command:
 
-gradlew resolveAndLockAll collectJarInfos --write-locks
-
-The collectJarInfos task is included because it also resolves the dynamic
-"...Copy" configurations used by jar validation.
+gradlew resolveAndLockAll --write-locks
 
 Starting in Solr 10, we also have to update a kotlin-js-store lockfile
 that is used by the new Admin UI WebAssembly target. This can be done by
diff --git a/dev-docs/lucene-upgrade.md b/dev-docs/lucene-upgrade.md
index dd17ef42380..8060a5f3de5 100644
--- a/dev-docs/lucene-upgrade.md
+++ b/dev-docs/lucene-upgrade.md
@@ -6,15 +6,15 @@ https://lucene.apache.org/core/9_4_0/MIGRATE.html
 
 ## Start
 
-Create a new branch locally e.g. `git checkout -b lucene1040 -t origin/main` 
for upgrading to Lucene 10.4.0 version.
+Create a new branch locally e.g. `git checkout -b lucene1051 -t origin/main` 
for upgrading to Lucene 10.5.1 version.
 
 ## Build
 
 ### `gradle/libs.versions.toml` update
 
 ```
-- apache-lucene:*=10.3.0
-+ apache-lucene:*=10.4.0
+-apache-lucene = "10.4.0"
++apache-lucene = "10.5.1"
 ```
 
 ### lockfiles update
@@ -31,6 +31,10 @@ Create a new branch locally e.g. `git checkout -b lucene1040 
-t origin/main` for
 git add solr/licenses
 ```
 
+Note that `updateLicenses` compiles Solr, because it enumerates the JARs on the
+compile and runtime classpaths. If Lucene made signature changes, fix the code
+first (see below) and then come back to this step.
+
 ## Code
 
 ```
diff --git a/gradle/solr/packaging.gradle b/gradle/solr/packaging.gradle
index ae3bfcc765d..1984acc5a99 100644
--- a/gradle/solr/packaging.gradle
+++ b/gradle/solr/packaging.gradle
@@ -92,8 +92,7 @@ configure(allprojects
             return true
           }
         }
-        // The copy does not inherit consistent resolution, re-align so we 
ship the tested versions
-        alignWithRuntimeClasspath(externalLibs)
+        pinCopyToSource(externalLibs, configurations.runtimeLibs)
         return externalLibs - configurations.solrPlatformLibs
       }, {
         into "lib"
@@ -120,6 +119,7 @@ configure(allprojects
         def testRuntimeLibs = 
configurations.testRuntimeClasspath.copyRecursive {dep ->
           !(dep instanceof org.gradle.api.artifacts.ProjectDependency)
         }
+        pinCopyToSource(testRuntimeLibs, configurations.testRuntimeClasspath)
 
         return testRuntimeLibs - configurations.runtimeLibs
       })
diff --git a/gradle/validation/dependencies.gradle 
b/gradle/validation/dependencies.gradle
index d0df3444bd9..ec55c5156e3 100644
--- a/gradle/validation/dependencies.gradle
+++ b/gradle/validation/dependencies.gradle
@@ -56,6 +56,15 @@ allprojects {
     conf.shouldResolveConsistentlyWith(project.configurations.runtimeClasspath)
   }
 
+  // Helper for the throwaway configurations produced by 
Configuration.copyRecursive(). Gradle names
+  // them "<source>Copy" and lockAllConfigurations() above would otherwise 
give them lock state of
+  // their own, which nothing ever refreshes because they exist only while a 
task is executing.
+  // They still have to resolve to the versions the source configuration was 
locked to.
+  ext.pinCopyToSource = { Configuration copy, Configuration source ->
+    copy.resolutionStrategy.deactivateDependencyLocking()
+    copy.shouldResolveConsistentlyWith(source)
+  }
+
   dependencies {
     modules {
       module("org.hamcrest:hamcrest-core") {
diff --git a/gradle/validation/jar-checks.gradle 
b/gradle/validation/jar-checks.gradle
index 24d294ef93e..0f137c68734 100644
--- a/gradle/validation/jar-checks.gradle
+++ b/gradle/validation/jar-checks.gradle
@@ -142,8 +142,10 @@ subprojects {
 
         return validationConf.extendsFrom.collect {conf ->
           if (excludeRules && excludeRules.size() > 0) {
-            conf = conf.copyRecursive()
+            def source = conf
+            conf = source.copyRecursive()
             conf.canBeResolved = true
+            pinCopyToSource(conf, source)
             excludeRuleMaps.forEach {conf.exclude(it)}
           }
           conf

Reply via email to