rdblue commented on code in PR #12095:
URL: https://github.com/apache/iceberg/pull/12095#discussion_r1936437048


##########
spark/v3.5/spark-runtime/NOTICE:
##########
@@ -244,8 +372,63 @@ This binary artifact includes Apache Arrow with the 
following in its NOTICE file
 
 
--------------------------------------------------------------------------------
 
-This binary artifact includes Netty buffers with the following in its NOTICE
-file:
+This binary artifact includes Apache Spark 3.5.4 with the following in its 
NOTICE file:

Review Comment:
   @jbonofre, Spark is not included in the runtime bundle -- I just double 
checked the Jar. It is provided by the Spark installation where the runtime 
bundle is used. I don't think this is accurate.
   
   For the Spark runtime bundle, we shade the `runtimeClasspath` dependency 
configuration and excluded dependencies that are coming from the Spark 
installation. Dependencies are excluded from the `implementation` configuration:
   
   ```
     configurations {
       implementation {
         exclude group: 'org.apache.spark'
         // included in Spark
         exclude group: 'org.slf4j'
         exclude group: 'org.apache.commons'
         exclude group: 'commons-pool'
         exclude group: 'commons-codec'
         exclude group: 'org.xerial.snappy'
         exclude group: 'javax.xml.bind'
         exclude group: 'javax.annotation'
         exclude group: 'com.github.luben'
         exclude group: 'com.ibm.icu'
         exclude group: 'org.glassfish'
         exclude group: 'org.abego.treelayout'
         exclude group: 'org.antlr'
         exclude group: 'org.scala-lang'
         exclude group: 'org.scala-lang.modules'
       }
     }
   ```
   
   Here's the expected set of dependencies from the `runtimeClasspath` 
configuration:
   ```
   runtimeClasspath - Runtime classpath of source set 'main'.
   +--- project :iceberg-api
   |    \--- project :iceberg-bundled-guava
   +--- project :iceberg-spark:iceberg-spark-3.5_2.12
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- project :iceberg-common
   |    |    \--- project :iceberg-bundled-guava
   |    +--- project :iceberg-core
   |    |    +--- project :iceberg-api (*)
   |    |    +--- org.apache.avro:avro:1.12.0
   |    |    |    +--- com.fasterxml.jackson.core:jackson-core:2.17.2 -> 2.15.2
   |    |    |    |    \--- com.fasterxml.jackson:jackson-bom:2.15.2 -> 2.18.2
   |    |    |    |         +--- 
com.fasterxml.jackson.core:jackson-annotations:2.18.2 (c)
   |    |    |    |         +--- com.fasterxml.jackson.core:jackson-core:2.18.2 
-> 2.15.2 (c)
   |    |    |    |         +--- 
com.fasterxml.jackson.core:jackson-databind:2.18.2 -> 2.15.2 (c)
   |    |    |    |         \--- 
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2 (c)
   |    |    |    \--- com.fasterxml.jackson.core:jackson-databind:2.17.2 -> 
2.15.2
   |    |    |         +--- 
com.fasterxml.jackson.core:jackson-annotations:2.15.2 -> 2.18.2
   |    |    |         |    \--- com.fasterxml.jackson:jackson-bom:2.18.2 (*)
   |    |    |         +--- com.fasterxml.jackson.core:jackson-core:2.15.2 (*)
   |    |    |         \--- com.fasterxml.jackson:jackson-bom:2.15.2 -> 2.18.2 
(*)
   |    |    +--- project :iceberg-common (*)
   |    |    +--- project :iceberg-bundled-guava
   |    |    +--- io.airlift:aircompressor:0.27 -> 2.0.2
   |    |    +--- org.apache.httpcomponents.client5:httpclient5:5.4.1
   |    |    |    +--- org.apache.httpcomponents.core5:httpcore5:5.3.1
   |    |    |    \--- org.apache.httpcomponents.core5:httpcore5-h2:5.3.1
   |    |    |         \--- org.apache.httpcomponents.core5:httpcore5:5.3.1
   |    |    +--- com.fasterxml.jackson:jackson-bom:2.18.2 (*)
   |    |    +--- com.fasterxml.jackson.core:jackson-core:2.18.2 -> 2.15.2 (*)
   |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.18.2 -> 2.15.2 
(*)
   |    |    +--- com.github.ben-manes.caffeine:caffeine:2.9.3
   |    |    |    +--- org.checkerframework:checker-qual:3.19.0
   |    |    |    \--- com.google.errorprone:error_prone_annotations:2.10.0
   |    |    \--- org.roaringbitmap:RoaringBitmap:1.3.0
   |    +--- project :iceberg-data
   |    |    +--- project :iceberg-api (*)
   |    |    +--- project :iceberg-bundled-guava
   |    |    +--- project :iceberg-core (*)
   |    |    +--- org.apache.orc:orc-core:1.9.5
   |    |    |    +--- org.apache.orc:orc-shims:1.9.5
   |    |    |    +--- io.airlift:aircompressor:0.27 -> 2.0.2
   |    |    |    +--- org.jetbrains:annotations:17.0.0
   |    |    |    \--- org.threeten:threeten-extra:1.7.1
   |    |    \--- org.apache.parquet:parquet-avro:1.15.0
   |    |         +--- org.apache.parquet:parquet-column:1.15.0
   |    |         |    +--- org.apache.parquet:parquet-common:1.15.0
   |    |         |    |    \--- 
org.apache.parquet:parquet-format-structures:1.15.0
   |    |         |    \--- org.apache.parquet:parquet-encoding:1.15.0
   |    |         |         \--- org.apache.parquet:parquet-common:1.15.0 (*)
   |    |         +--- org.apache.parquet:parquet-hadoop:1.15.0
   |    |         |    +--- org.apache.parquet:parquet-column:1.15.0 (*)
   |    |         |    +--- org.apache.parquet:parquet-format-structures:1.15.0
   |    |         |    +--- org.apache.parquet:parquet-common:1.15.0 (*)
   |    |         |    +--- org.apache.parquet:parquet-jackson:1.15.0
   |    |         |    \--- io.airlift:aircompressor:2.0.2
   |    |         \--- org.apache.parquet:parquet-common:1.15.0 (*)
   |    +--- project :iceberg-orc
   |    |    +--- project :iceberg-api (*)
   |    |    +--- project :iceberg-bundled-guava
   |    |    +--- project :iceberg-common (*)
   |    |    +--- project :iceberg-core (*)
   |    |    +--- org.apache.avro:avro:1.12.0 (*)
   |    |    \--- org.apache.orc:orc-core:1.9.5 (*)
   |    +--- project :iceberg-parquet
   |    |    +--- project :iceberg-api (*)
   |    |    +--- project :iceberg-bundled-guava
   |    |    +--- project :iceberg-core (*)
   |    |    +--- project :iceberg-common (*)
   |    |    \--- org.apache.parquet:parquet-avro:1.15.0 (*)
   |    +--- project :iceberg-arrow
   |    |    +--- project :iceberg-api (*)
   |    |    +--- project :iceberg-bundled-guava
   |    |    +--- project :iceberg-core (*)
   |    |    +--- project :iceberg-parquet (*)
   |    |    +--- org.apache.arrow:arrow-vector:15.0.2
   |    |    |    +--- org.apache.arrow:arrow-format:15.0.2
   |    |    |    |    \--- com.google.flatbuffers:flatbuffers-java:23.5.26
   |    |    |    +--- org.apache.arrow:arrow-memory-core:15.0.2
   |    |    |    +--- com.fasterxml.jackson.core:jackson-core:2.16.0 -> 2.15.2 
(*)
   |    |    |    +--- com.fasterxml.jackson.core:jackson-annotations:2.16.0 -> 
2.18.2 (*)
   |    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.16.0 -> 
2.15.2 (*)
   |    |    |    +--- 
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.16.0 -> 2.18.2
   |    |    |    |    +--- 
com.fasterxml.jackson.core:jackson-annotations:2.18.2 (*)
   |    |    |    |    +--- com.fasterxml.jackson.core:jackson-core:2.18.2 -> 
2.15.2 (*)
   |    |    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.18.2 
-> 2.15.2 (*)
   |    |    |    |    \--- com.fasterxml.jackson:jackson-bom:2.18.2 (*)
   |    |    |    +--- com.google.flatbuffers:flatbuffers-java:23.5.26
   |    |    |    \--- org.eclipse.collections:eclipse-collections:11.1.0
   |    |    |         \--- 
org.eclipse.collections:eclipse-collections-api:11.1.0
   |    |    +--- org.apache.arrow:arrow-memory-netty:15.0.2
   |    |    |    \--- org.apache.arrow:arrow-memory-core:15.0.2
   |    |    +--- org.apache.parquet:parquet-avro:1.15.0 (*)
   |    |    \--- io.netty:netty-buffer:4.1.117.Final
   |    |         \--- io.netty:netty-common:4.1.117.Final
   |    +--- org.apache.datasketches:datasketches-java:6.2.0
   |    |    \--- org.apache.datasketches:datasketches-memory:3.0.2
   |    +--- org.apache.parquet:parquet-column:1.15.0 (*)
   |    +--- org.apache.parquet:parquet-hadoop:1.15.0 (*)
   |    +--- org.apache.orc:orc-core:1.9.5 (*)
   |    +--- org.apache.arrow:arrow-vector:15.0.2 (*)
   |    \--- com.github.ben-manes.caffeine:caffeine:2.9.3 (*)
   +--- project :iceberg-spark:iceberg-spark-extensions-3.5_2.12
   |    \--- org.roaringbitmap:RoaringBitmap:1.3.0
   +--- project :iceberg-aws
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- project :iceberg-common (*)
   |    +--- project :iceberg-core (*)
   |    +--- com.github.ben-manes.caffeine:caffeine:2.9.3 (*)
   |    +--- dev.failsafe:failsafe:3.3.2
   |    +--- com.fasterxml.jackson:jackson-bom:2.18.2 (*)
   |    +--- com.fasterxml.jackson.core:jackson-core:2.18.2 -> 2.15.2 (*)
   |    \--- com.fasterxml.jackson.core:jackson-databind:2.18.2 -> 2.15.2 (*)
   +--- project :iceberg-azure
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- project :iceberg-common (*)
   |    \--- project :iceberg-core (*)
   +--- project :iceberg-aliyun
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- project :iceberg-core (*)
   |    \--- project :iceberg-common (*)
   +--- project :iceberg-gcp
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- project :iceberg-common (*)
   |    \--- project :iceberg-core (*)
   +--- project :iceberg-hive-metastore
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- project :iceberg-core (*)
   |    +--- project :iceberg-common (*)
   |    \--- com.github.ben-manes.caffeine:caffeine:2.9.3 (*)
   +--- project :iceberg-nessie
   |    +--- project :iceberg-api (*)
   |    +--- project :iceberg-common (*)
   |    +--- project :iceberg-core (*)
   |    +--- project :iceberg-bundled-guava
   |    +--- org.projectnessie.nessie:nessie-client:0.102.2
   |    |    +--- com.fasterxml.jackson.core:jackson-core -> 2.15.2 (*)
   |    |    +--- com.fasterxml.jackson.core:jackson-databind -> 2.15.2 (*)
   |    |    +--- com.fasterxml.jackson.core:jackson-annotations -> 2.18.2 (*)
   |    |    +--- 
org.eclipse.microprofile.openapi:microprofile-openapi-api:4.0.2
   |    |    \--- org.projectnessie.nessie:nessie-model:0.102.2
   |    |         +--- com.fasterxml.jackson.core:jackson-databind -> 2.15.2 (*)
   |    |         \--- com.fasterxml.jackson.core:jackson-annotations -> 2.18.2 
(*)
   |    +--- com.fasterxml.jackson:jackson-bom:2.18.2 (*)
   |    +--- com.fasterxml.jackson.core:jackson-core:2.18.2 -> 2.15.2 (*)
   |    \--- com.fasterxml.jackson.core:jackson-databind:2.18.2 -> 2.15.2 (*)
   \--- project :iceberg-snowflake
        +--- project :iceberg-core (*)
        +--- project :iceberg-common (*)
        +--- project :iceberg-bundled-guava
        +--- com.fasterxml.jackson:jackson-bom:2.18.2 (*)
        +--- com.fasterxml.jackson.core:jackson-core:2.18.2 -> 2.15.2 (*)
        \--- com.fasterxml.jackson.core:jackson-databind:2.18.2 -> 2.15.2 (*)
   ```
   
   The bundled dependencies that can be are also relocated:
   ```
       // Relocate dependencies to avoid conflicts
       relocate 'com.google.errorprone', 
'org.apache.iceberg.shaded.com.google.errorprone'
       relocate 'com.google.flatbuffers', 
'org.apache.iceberg.shaded.com.google.flatbuffers'
       relocate 'com.fasterxml', 'org.apache.iceberg.shaded.com.fasterxml'
       relocate 'com.github.benmanes', 
'org.apache.iceberg.shaded.com.github.benmanes'
       relocate 'org.checkerframework', 
'org.apache.iceberg.shaded.org.checkerframework'
       relocate 'org.apache.avro', 'org.apache.iceberg.shaded.org.apache.avro'
       relocate 'avro.shaded', 
'org.apache.iceberg.shaded.org.apache.avro.shaded'
       relocate 'com.thoughtworks.paranamer', 
'org.apache.iceberg.shaded.com.thoughtworks.paranamer'
       relocate 'org.apache.parquet', 
'org.apache.iceberg.shaded.org.apache.parquet'
       relocate 'shaded.parquet', 
'org.apache.iceberg.shaded.org.apache.parquet.shaded'
       relocate 'org.apache.orc', 'org.apache.iceberg.shaded.org.apache.orc'
       relocate 'io.airlift', 'org.apache.iceberg.shaded.io.airlift'
       relocate 'org.apache.hc.client5', 
'org.apache.iceberg.shaded.org.apache.hc.client5'
       relocate 'org.apache.hc.core5', 
'org.apache.iceberg.shaded.org.apache.hc.core5'
       // relocate Arrow and related deps to shade Iceberg specific version
       relocate 'io.netty', 'org.apache.iceberg.shaded.io.netty'
       relocate 'org.apache.arrow', 'org.apache.iceberg.shaded.org.apache.arrow'
       relocate 'com.carrotsearch', 'org.apache.iceberg.shaded.com.carrotsearch'
       relocate 'org.threeten.extra', 
'org.apache.iceberg.shaded.org.threeten.extra'
       relocate 'org.roaringbitmap', 
'org.apache.iceberg.shaded.org.roaringbitmap'
       relocate 'org.apache.datasketches', 
'org.apache.iceberg.shaded.org.apache.datasketches'
   ```
   
   The result is that the Jar should have very few classes outside of the 
`org.apache.iceberg` namespace. When building a LICENSE and NOTICE, we need to 
use the classes actually in the Jar file.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to