Description
We use BP_NATIVE_IMAGE=true
and BP_DATADOG_ENABLED=true
. Both add arguments to native-image
. Unfortunately native-image BP removes argument added by Datadog BP.
Expected Behavior
native-image BP appends arguments
Current Behavior
native-image BP replaces arguments
Steps to Reproduce
BP_NATIVE_IMAGE_BUILD_ARGUMENTS=-O0 -J-Xmx7g
Paketo Buildpack for Datadog 4.6.0
[INFO] [creator] https://github.com/paketo-buildpacks/datadog
[INFO] [creator] Build Configuration:
[INFO] [creator] $BP_DATADOG_ENABLED true whether to contribute the Datadog trace agent
[INFO] [creator] Launch Configuration:
[INFO] [creator] $BPL_DATADOG_DISABLED false whether to disable the Datadog trace agent (non native-image Java applications only!)
[INFO] [creator] Datadog Java Agent 1.25.1: Contributing to layer
[INFO] [creator] Downloading from https://repo1.maven.org/maven2/com/datadoghq/dd-java-agent/1.25.1/dd-java-agent-1.25.1.jar
[INFO] [creator] Verifying checksum
[INFO] [creator] Copying to /layers/paketo-buildpacks_datadog/datadog-agent-java
[INFO] [creator] Writing env.build/BP_NATIVE_IMAGE_BUILD_ARGUMENTS.append
[INFO] [creator] Writing env.build/BP_NATIVE_IMAGE_BUILD_ARGUMENTS.delim
[INFO] [creator] Writing env.launch/BPI_DATADOG_AGENT_PATH.default
[INFO] [creator]
[INFO] [creator] Paketo Buildpack for Native Image 5.12.7
[INFO] [creator] https://github.com/paketo-buildpacks/native-image
[INFO] [creator] Build Configuration:
[INFO] [creator] $BP_BINARY_COMPRESSION_METHOD Compression mechanism used to reduce binary size. Options: `none` (default), `upx` or `gzexe`
[INFO] [creator] $BP_NATIVE_IMAGE true enable native image build
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS -O0 -J-Xmx7g arguments to pass to the native-image command
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS_FILE a file with arguments to pass to the native-image command
[INFO] [creator] $BP_NATIVE_IMAGE_BUILT_ARTIFACT the built application artifact explicitly, required if building from a JAR
[INFO] [creator] Native Image: Contributing to layer
[INFO] [creator] Executing native-image --no-fallback -H:+StaticExecutableWithDynamicLibC -O0 -J-Xmx7g -H:Name=/layers/paketo-buildpacks_native-image/native-image/com.mercedesbenz.blueprint.Application -cp ...
In last line Datadog agent configuration is missing.
BP_NATIVE_IMAGE_BUILD_ARGUMENTS
not set
Paketo Buildpack for Datadog 4.6.0
[INFO] [creator] https://github.com/paketo-buildpacks/datadog
[INFO] [creator] Build Configuration:
[INFO] [creator] $BP_DATADOG_ENABLED true whether to contribute the Datadog trace agent
[INFO] [creator] Launch Configuration:
[INFO] [creator] $BPL_DATADOG_DISABLED false whether to disable the Datadog trace agent (non native-image Java applications only!)
[INFO] [creator] Datadog Java Agent 1.25.1: Contributing to layer
[INFO] [creator] Downloading from https://repo1.maven.org/maven2/com/datadoghq/dd-java-agent/1.25.1/dd-java-agent-1.25.1.jar
[INFO] [creator] Verifying checksum
[INFO] [creator] Copying to /layers/paketo-buildpacks_datadog/datadog-agent-java
[INFO] [creator] Writing env.build/BP_NATIVE_IMAGE_BUILD_ARGUMENTS.append
[INFO] [creator] Writing env.build/BP_NATIVE_IMAGE_BUILD_ARGUMENTS.delim
[INFO] [creator] Writing env.launch/BPI_DATADOG_AGENT_PATH.default
[INFO] [creator]
[INFO] [creator] Paketo Buildpack for Native Image 5.12.7
[INFO] [creator] https://github.com/paketo-buildpacks/native-image
[INFO] [creator] Build Configuration:
[INFO] [creator] $BP_BINARY_COMPRESSION_METHOD Compression mechanism used to reduce binary size. Options: `none` (default), `upx` or `gzexe`
[INFO] [creator] $BP_NATIVE_IMAGE true enable native image build
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS -J-javaagent:/layers/paketo-buildpacks_datadog/datadog-agent-java/dd-java-agent-1.25.1.jar arguments to pass to the native-image command
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS_FILE a file with arguments to pass to the native-image command
[INFO] [creator] $BP_NATIVE_IMAGE_BUILT_ARTIFACT the built application artifact explicitly, required if building from a JAR
[INFO] [creator] Native Image: Contributing to layer
[INFO] [creator] Executing native-image --no-fallback -H:+StaticExecutableWithDynamicLibC -J-javaagent:/layers/paketo-buildpacks_datadog/datadog-agent-java/dd-java-agent-1.25.1.jar -H:Name=/layers/paketo-buildpacks_native-image/native-image/com.mercedesbenz.blueprint.Application -cp ...
In last line Datadog argument is included (-J-javaagent:/layers/paketo-buildpacks_datadog/datadog-agent-java/dd-java-agent-1.25.1.jar
).
Please see that native BP recognizes arguments added by Datadog:
[INFO] [creator] Paketo Buildpack for Native Image 5.12.7
...
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS -J-javaagent:/layers/paketo-buildpacks_datadog/datadog-agent-java/dd-java-agent-1.25.1.jar arguments to pass to the native-image command
...
Workaround
Configure Datadog argument manually:
<BP_NATIVE_IMAGE_BUILD_ARGUMENTS>-O0 -J-Xmx7g -J-javaagent:/layers/paketo-buildpacks_datadog/datadog-agent-java/dd-java-agent-1.25.1.jar</BP_NATIVE_IMAGE_BUILD_ARGUMENTS>
unfortunately this workaround will fail after Datadog BP upgrades agent version
Motivations
We want to use Native, Datadog and custom arguments in the same time due to need to change default native-build memory settings, disable optimizations etc.