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

jiadongb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git


The following commit(s) were added to refs/heads/main by this push:
     new 47bb2e43b1 chore(license): switch to DISCLAIMER-WIP and add ASF 
licensing files to JARs and Docker images (#4288)
47bb2e43b1 is described below

commit 47bb2e43b1e2fce66598188909905b8e66c1aa46
Author: Jiadong Bai <[email protected]>
AuthorDate: Fri Mar 13 14:42:21 2026 -0700

    chore(license): switch to DISCLAIMER-WIP and add ASF licensing files to 
JARs and Docker images (#4288)
    
    ### What changes were proposed in this PR?
    
    - Renamed `DISCLAIMER` to `DISCLAIMER-WIP` using the ASF-required
    template from the [incubation
    policy](https://incubator.apache.org/policy/incubation.html#disclaimers),
    listing the incomplete dependency license audit as a known issue.
    - Added `LICENSE`, `NOTICE`, and `DISCLAIMER-WIP` to every Texera JAR's
    `META-INF/` directory via an sbt `resourceGenerators` task that
    dynamically copies them from the repo root at build time.
    - Added `COPY` instructions in all 8 Dockerfiles to include `LICENSE`,
    `NOTICE`, and `DISCLAIMER-WIP` at `/texera/` in every Docker image.
    
    ### Any related issues, documentation, discussions?
    
    A workaround based on #4131
    
    ### How was this PR tested?
    
    - Verified `DISCLAIMER-WIP` content follows the ASF incubation policy
    template.
    - Verified sbt `resourceGenerators` setting compiles and is applied to
    all subprojects.
    
    ### Was this PR authored or co-authored using generative AI tooling?
    
    Co-created with: Claude Code (Claude Opus 4.6)
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
    Co-authored-by: Chen Li <[email protected]>
---
 .licenserc.yaml                                    |  1 +
 DISCLAIMER                                         | 10 -------
 DISCLAIMER-WIP                                     | 23 +++++++++++++++
 bin/access-control-service.dockerfile              |  3 ++
 bin/computing-unit-master.dockerfile               |  3 ++
 bin/computing-unit-worker.dockerfile               |  3 ++
 bin/config-service.dockerfile                      |  3 ++
 bin/file-service.dockerfile                        |  3 ++
 bin/texera-web-application.dockerfile              |  3 ++
 bin/workflow-compiling-service.dockerfile          |  3 ++
 ...flow-computing-unit-managing-service.dockerfile |  3 ++
 build.sbt                                          | 33 ++++++++++++++++++++--
 12 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/.licenserc.yaml b/.licenserc.yaml
index 65e6c76290..2456ac4362 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -12,6 +12,7 @@ header:
     - '**/*.jsonl'
     - 'DESCRIPTION'
     - 'DISCLAIMER'
+    - 'DISCLAIMER-WIP'
     - 'LICENSE'
     - 'NOTICE'
     - '.dockerignore'
diff --git a/DISCLAIMER b/DISCLAIMER
deleted file mode 100644
index 2828967637..0000000000
--- a/DISCLAIMER
+++ /dev/null
@@ -1,10 +0,0 @@
-Apache Texera (incubating) is an effort undergoing incubation at the Apache
-Software Foundation (ASF), sponsored by the Apache Incubator PMC.
-
-Incubation is required of all newly accepted projects until a further review
-indicates that the infrastructure, communications, and decision making process
-have stabilized in a manner consistent with other successful ASF projects.
-
-While incubation status is not necessarily a reflection of the completeness
-or stability of the code, it does indicate that the project has yet to be
-fully endorsed by the ASF.
diff --git a/DISCLAIMER-WIP b/DISCLAIMER-WIP
new file mode 100644
index 0000000000..cbc718569a
--- /dev/null
+++ b/DISCLAIMER-WIP
@@ -0,0 +1,23 @@
+Apache Texera is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is
+required of all newly accepted projects until a further review indicates
+that the infrastructure, communications, and decision-making process have
+stabilized in a manner consistent with other successful ASF projects.
+While incubation status is not necessarily a reflection of the
+completeness or stability of the code, it does indicate that the project
+has yet to be fully endorsed by the ASF.
+
+Some of the incubating project's releases may not be fully compliant
+with ASF policy. For example, releases may have incomplete or
+un-reviewed licensing conditions. What follows is a list of issues
+the project is currently aware of (this list is likely to be incomplete):
+
+- LICENSE and NOTICE files in binary artifacts (Docker images, JARs) may
+  not yet fully account for all bundled third-party dependencies. A
+  comprehensive dependency license audit is in progress.
+
+If you are planning to incorporate this work into your product/project,
+please be aware that you will need to conduct a thorough licensing
+review to determine the overall implications of including this work.
+For the current status of this project through the Apache Incubator,
+visit: https://incubator.apache.org/projects/texera.html
diff --git a/bin/access-control-service.dockerfile 
b/bin/access-control-service.dockerfile
index 41b328f78e..0a7866a0c9 100644
--- a/bin/access-control-service.dockerfile
+++ b/bin/access-control-service.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean AccessControlService/dist
 
@@ -50,6 +51,8 @@ COPY --from=build /texera/.git /texera/.git
 COPY --from=build /texera/target/access-control-service* /texera/
 # Copy resources directories from build phase
 COPY --from=build /texera/access-control-service/src/main/resources 
/texera/access-control-service/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/access-control-service"]
 
diff --git a/bin/computing-unit-master.dockerfile 
b/bin/computing-unit-master.dockerfile
index 89f61f17fc..f9df6e4f9f 100644
--- a/bin/computing-unit-master.dockerfile
+++ b/bin/computing-unit-master.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean WorkflowExecutionService/dist
 
@@ -121,6 +122,8 @@ COPY --from=build /texera/common/config/src/main/resources 
/texera/amber/common/
 COPY --from=build /texera/amber/src/main/resources 
/texera/amber/src/main/resources
 # Copy code for python & R UDF
 COPY --from=build /texera/amber/src/main/python /texera/amber/src/main/python
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/computing-unit-master"]
 
diff --git a/bin/computing-unit-worker.dockerfile 
b/bin/computing-unit-worker.dockerfile
index ef8a57b617..c938da7835 100644
--- a/bin/computing-unit-worker.dockerfile
+++ b/bin/computing-unit-worker.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean WorkflowExecutionService/dist
 
@@ -119,6 +120,8 @@ COPY --from=build /texera/amber/target/amber-* 
/texera/amber/
 # Copy resources directories from build phase
 COPY --from=build /texera/amber/src/main/resources 
/texera/amber/src/main/resources
 COPY --from=build /texera/common/config/src/main/resources 
/texera/amber/common/config/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/computing-unit-worker"]
 
diff --git a/bin/config-service.dockerfile b/bin/config-service.dockerfile
index 1a8bd34ec6..f3abbcc617 100644
--- a/bin/config-service.dockerfile
+++ b/bin/config-service.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean ConfigService/dist
 
@@ -51,6 +52,8 @@ COPY --from=build /texera/target/config-service-* /texera/
 # Copy resources directories from build phase
 COPY --from=build /texera/common/config/src/main/resources 
/texera/common/config/src/main/resources
 COPY --from=build /texera/config-service/src/main/resources 
/texera/config-service/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/config-service"]
 
diff --git a/bin/file-service.dockerfile b/bin/file-service.dockerfile
index 0fc8a433d7..9663818ccd 100644
--- a/bin/file-service.dockerfile
+++ b/bin/file-service.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean FileService/dist
 
@@ -50,6 +51,8 @@ COPY --from=build /texera/target/file-service-* /texera/
 # Copy resources directories from build phase
 COPY --from=build /texera/common/config/src/main/resources 
/texera/common/config/src/main/resources
 COPY --from=build /texera/file-service/src/main/resources 
/texera/file-service/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/file-service"]
 
diff --git a/bin/texera-web-application.dockerfile 
b/bin/texera-web-application.dockerfile
index 0b33a12448..a3bb2d85e3 100644
--- a/bin/texera-web-application.dockerfile
+++ b/bin/texera-web-application.dockerfile
@@ -49,6 +49,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean WorkflowExecutionService/dist
 
@@ -66,6 +67,8 @@ COPY --from=build /texera/amber/target/amber-* /texera/amber/
 # Copy resources directories from build phase
 COPY --from=build /texera/amber/src/main/resources 
/texera/amber/src/main/resources
 COPY --from=build /texera/common/config/src/main/resources 
/texera/amber/common/config/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/texera-web-application"]
 
diff --git a/bin/workflow-compiling-service.dockerfile 
b/bin/workflow-compiling-service.dockerfile
index 803cbe87de..291d2d52e2 100644
--- a/bin/workflow-compiling-service.dockerfile
+++ b/bin/workflow-compiling-service.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean WorkflowCompilingService/dist
 
@@ -51,6 +52,8 @@ COPY --from=build /texera/target/workflow-compiling-service-* 
/texera/
 # Copy resources directories from build phase
 COPY --from=build /texera/common/config/src/main/resources 
/texera/common/config/src/main/resources
 COPY --from=build /texera/workflow-compiling-service/src/main/resources 
/texera/workflow-compiling-service/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/workflow-compiling-service"]
 
diff --git a/bin/workflow-computing-unit-managing-service.dockerfile 
b/bin/workflow-computing-unit-managing-service.dockerfile
index 30924c8687..0f0739d60c 100644
--- a/bin/workflow-computing-unit-managing-service.dockerfile
+++ b/bin/workflow-computing-unit-managing-service.dockerfile
@@ -35,6 +35,7 @@ RUN apt-get update && apt-get install -y \
 
 # Add .git for runtime calls to jgit from OPversion
 COPY .git .git
+COPY LICENSE NOTICE DISCLAIMER-WIP ./
 
 RUN sbt clean ComputingUnitManagingService/dist
 
@@ -51,6 +52,8 @@ COPY --from=build 
/texera/target/computing-unit-managing-service-* /texera/
 # Copy resources directories from build phase
 COPY --from=build /texera/common/config/src/main/resources 
/texera/common/config/src/main/resources
 COPY --from=build /texera/computing-unit-managing-service/src/main/resources 
/texera/computing-unit-managing-service/src/main/resources
+# Copy ASF licensing files
+COPY --from=build /texera/LICENSE /texera/NOTICE /texera/DISCLAIMER-WIP 
/texera/
 
 CMD ["bin/computing-unit-managing-service"]
 
diff --git a/build.sbt b/build.sbt
index 1e506e44f6..6673408561 100644
--- a/build.sbt
+++ b/build.sbt
@@ -15,12 +15,32 @@
 // specific language governing permissions and limitations
 // under the License.
 
-lazy val DAO = project in file("common/dao")
-lazy val Config = project in file("common/config")
+// Copy LICENSE, NOTICE, and DISCLAIMER-WIP from the repo root into META-INF 
of every JAR.
+// This ensures ASF licensing files are present in all binary artifacts.
+lazy val asfLicensingSettings = Seq(
+  Compile / resourceGenerators += Def.task {
+    val rootDir = (ThisBuild / baseDirectory).value
+    val metaInfDir = (Compile / resourceManaged).value / "META-INF"
+    val filesToCopy = Seq("LICENSE", "NOTICE", "DISCLAIMER-WIP")
+    filesToCopy.flatMap { fileName =>
+      val src = rootDir / fileName
+      if (src.exists()) {
+        val dest = metaInfDir / fileName
+        IO.copyFile(src, dest)
+        Seq(dest)
+      } else Seq.empty
+    }
+  }.taskValue
+)
+
+lazy val DAO = (project in file("common/dao")).settings(asfLicensingSettings)
+lazy val Config = (project in 
file("common/config")).settings(asfLicensingSettings)
 lazy val Auth = (project in file("common/auth"))
+  .settings(asfLicensingSettings)
   .dependsOn(DAO, Config)
 lazy val ConfigService = (project in file("config-service"))
   .dependsOn(Auth, Config)
+  .settings(asfLicensingSettings)
   .settings(
     dependencyOverrides ++= Seq(
       // override it as io.dropwizard 4 require 2.16.1 or higher
@@ -29,6 +49,7 @@ lazy val ConfigService = (project in file("config-service"))
   )
 lazy val AccessControlService = (project in file("access-control-service"))
   .dependsOn(Auth, Config, DAO)
+  .settings(asfLicensingSettings)
   .settings(
     dependencyOverrides ++= Seq(
       // override it as io.dropwizard 4 require 2.16.1 or higher
@@ -41,15 +62,18 @@ lazy val AccessControlService = (project in 
file("access-control-service"))
 //This Scala module defines a pyb"..." macro-based DSL for composing Python 
code templates as an immutable PythonTemplateBuilder.
 //Used mainly for Python Native Operators
 lazy val PyBuilder = (project in file("common/pybuilder"))
+  .settings(asfLicensingSettings)
   .configs(Test)
   .dependsOn(DAO % "test->test") // test scope dependency
 
 lazy val WorkflowCore = (project in file("common/workflow-core"))
+  .settings(asfLicensingSettings)
   .dependsOn(DAO, Config, PyBuilder)
   .configs(Test)
   .dependsOn(DAO % "test->test") // test scope dependency
 lazy val ComputingUnitManagingService = (project in 
file("computing-unit-managing-service"))
   .dependsOn(WorkflowCore, Auth, Config)
+  .settings(asfLicensingSettings)
   .settings(
     dependencyOverrides ++= Seq(
       // override it as io.dropwizard 4 require 2.16.1 or higher
@@ -57,6 +81,7 @@ lazy val ComputingUnitManagingService = (project in 
file("computing-unit-managin
     )
   )
 lazy val FileService = (project in file("file-service"))
+  .settings(asfLicensingSettings)
   .dependsOn(WorkflowCore, Auth, Config)
   .configs(Test)
   .dependsOn(DAO % "test->test") // test scope dependency
@@ -69,9 +94,10 @@ lazy val FileService = (project in file("file-service"))
     )
   )
 
-lazy val WorkflowOperator = (project in 
file("common/workflow-operator")).dependsOn(WorkflowCore)
+lazy val WorkflowOperator = (project in 
file("common/workflow-operator")).settings(asfLicensingSettings).dependsOn(WorkflowCore)
 lazy val WorkflowCompilingService = (project in 
file("workflow-compiling-service"))
   .dependsOn(WorkflowOperator, Config)
+  .settings(asfLicensingSettings)
   .settings(
     dependencyOverrides ++= Seq(
       // override it as io.dropwizard 4 require 2.16.1 or higher
@@ -83,6 +109,7 @@ lazy val WorkflowCompilingService = (project in 
file("workflow-compiling-service
 
 lazy val WorkflowExecutionService = (project in file("amber"))
   .dependsOn(WorkflowOperator, Auth, Config)
+  .settings(asfLicensingSettings)
   .settings(
     dependencyOverrides ++= Seq(
       "com.fasterxml.jackson.core" % "jackson-core" % "2.15.1",

Reply via email to