Skip to content

Commit 2982dad

Browse files
authored
Merge pull request quarkusio#48074 from geoand/quarkusio#48073
Auto-add .so files to the Jib generated native-image container
2 parents 162aef4 + f982dff commit 2982dad

File tree

1 file changed

+21
-0
lines changed
  • extensions/container-image/container-image-jib/deployment/src/main/java/io/quarkus/container/image/jib/deployment

1 file changed

+21
-0
lines changed

extensions/container-image/container-image-jib/deployment/src/main/java/io/quarkus/container/image/jib/deployment/JibProcessor.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,7 @@ private JibContainerBuilder createContainerBuilderFromNative(ContainerImageJibCo
806806
.setEnvironment(createEnvironmentVariables(jibConfig))
807807
.setLabels(allLabels(jibConfig, containerImageConfig, containerImageLabels));
808808

809+
includeSharedObjects(jibContainerBuilder, nativeImageBuildItem, workDirInContainer);
809810
mayInheritEntrypoint(jibContainerBuilder, entrypoint, jibConfig.nativeArguments().orElse(null));
810811

811812
if (jibConfig.useCurrentTimestamp()) {
@@ -821,6 +822,26 @@ private JibContainerBuilder createContainerBuilderFromNative(ContainerImageJibCo
821822
}
822823
}
823824

825+
private void includeSharedObjects(JibContainerBuilder jibContainerBuilder, NativeImageBuildItem nativeImageBuildItem,
826+
AbsoluteUnixPath workDirInContainer) {
827+
Path buildDir = nativeImageBuildItem.getPath().getParent();
828+
try (Stream<Path> paths = Files.list(buildDir)) {
829+
List<Path> sharedObjectFiles = paths.filter(Files::isRegularFile).filter(p -> !Files.isDirectory(p))
830+
.filter(p -> p.getFileName().toString().endsWith(".so")).toList();
831+
if (!sharedObjectFiles.isEmpty()) {
832+
FileEntriesLayer.Builder fileEntriesLayerBuilder = FileEntriesLayer.builder();
833+
sharedObjectFiles.forEach(sharedObjectFile -> {
834+
fileEntriesLayerBuilder.addEntry(sharedObjectFile,
835+
workDirInContainer.resolve(sharedObjectFile.getFileName().toString()),
836+
FilePermissions.fromOctalString("775"));
837+
});
838+
jibContainerBuilder.addFileEntriesLayer(fileEntriesLayerBuilder.setName("shared objects").build());
839+
}
840+
} catch (IOException e) {
841+
throw new UncheckedIOException(e);
842+
}
843+
}
844+
824845
private Map<String, String> createEnvironmentVariables(ContainerImageJibConfig jibConfig) {
825846
Map<String, String> original = jibConfig.environmentVariables();
826847
if (original.isEmpty()) {

0 commit comments

Comments
 (0)