@@ -806,6 +806,7 @@ private JibContainerBuilder createContainerBuilderFromNative(ContainerImageJibCo
806
806
.setEnvironment (createEnvironmentVariables (jibConfig ))
807
807
.setLabels (allLabels (jibConfig , containerImageConfig , containerImageLabels ));
808
808
809
+ includeSharedObjects (jibContainerBuilder , nativeImageBuildItem , workDirInContainer );
809
810
mayInheritEntrypoint (jibContainerBuilder , entrypoint , jibConfig .nativeArguments ().orElse (null ));
810
811
811
812
if (jibConfig .useCurrentTimestamp ()) {
@@ -821,6 +822,26 @@ private JibContainerBuilder createContainerBuilderFromNative(ContainerImageJibCo
821
822
}
822
823
}
823
824
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
+
824
845
private Map <String , String > createEnvironmentVariables (ContainerImageJibConfig jibConfig ) {
825
846
Map <String , String > original = jibConfig .environmentVariables ();
826
847
if (original .isEmpty ()) {
0 commit comments