Skip to content

Commit

Permalink
Do not attempt to detect container runtime in native-sources build
Browse files Browse the repository at this point in the history
Closes: quarkusio#33161
(cherry picked from commit db9ffd7)
  • Loading branch information
zakkak authored and gsmet committed May 23, 2023
1 parent 62e9725 commit c9a2862
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
Expand Up @@ -329,7 +329,7 @@ private String getResultingExecutableName(String nativeImageName, boolean isCont
/**
* Resolves the runner factory. Happens quite early, *before* the build.
*/
@BuildStep
@BuildStep(onlyIf = NativeBuild.class)
public NativeImageRunnerBuildItem resolveNativeImageBuildRunner(NativeConfig nativeConfig) {
boolean isExplicitContainerBuild = nativeConfig.containerBuild()
.orElse(nativeConfig.containerRuntime().isPresent() || nativeConfig.remoteContainerBuild());
Expand All @@ -353,6 +353,16 @@ public NativeImageRunnerBuildItem resolveNativeImageBuildRunner(NativeConfig nat
return new NativeImageRunnerBuildItem(new NativeImageBuildLocalContainerRunner(nativeConfig));
}

/**
* Creates a dummy runner for native-sources builds. This allows the creation of native-source jars without
* requiring podman/docker or a local native-image installation.
*/
@BuildStep(onlyIf = NativeSourcesBuild.class)
public NativeImageRunnerBuildItem dummyNativeImageBuildRunner(NativeConfig nativeConfig) {
boolean explicitContainerBuild = nativeConfig.isExplicitContainerBuild();
return new NativeImageRunnerBuildItem(new NoopNativeImageBuildRunner(explicitContainerBuild));
}

private void copyJarSourcesToLib(OutputTargetBuildItem outputTargetBuildItem,
CurateOutcomeBuildItem curateOutcomeBuildItem) {
Path targetDirectory = outputTargetBuildItem.getOutputDirectory()
Expand Down
@@ -0,0 +1,34 @@
package io.quarkus.deployment.pkg.steps;

import java.nio.file.Path;
import java.util.List;

public class NoopNativeImageBuildRunner extends NativeImageBuildRunner {

private static final String MESSAGE = "NoopNativeImageBuildRunner is not meant to be used to perform an actual build.";
private final boolean isContainer;

public NoopNativeImageBuildRunner(boolean isContainer) {
this.isContainer = isContainer;
}

@Override
public boolean isContainer() {
return isContainer;
}

@Override
protected String[] getGraalVMVersionCommand(List<String> args) {
throw new UnsupportedOperationException(MESSAGE);
}

@Override
protected String[] getBuildCommand(Path outputDir, List<String> args) {
throw new UnsupportedOperationException(MESSAGE);
}

@Override
protected void objcopy(Path outputDir, String... args) {
throw new UnsupportedOperationException(MESSAGE);
}
}
5 changes: 3 additions & 2 deletions docs/src/main/asciidoc/building-native-image.adoc
Expand Up @@ -786,10 +786,11 @@ $ ./mvnw clean package -Dquarkus.package.type=native-sources -Dquarkus.native.co
cd target/native-sources
docker run \
-it \
--user $(id -ur):$(id -gr) \
--rm \
--v $(pwd):/work \# <1>
-v $(pwd):/work \# <1>
-w /work \# <2>
--entrypoint bin/sh \
--entrypoint /bin/sh \
$(cat native-builder.image) \# <3>
-c "native-image $(cat native-image.args) -J-Xmx4g"# <4>
----
Expand Down

0 comments on commit c9a2862

Please sign in to comment.