Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

plantuml plugin requires dot utiliy #630

Closed
slachiewicz opened this issue Jan 7, 2025 · 8 comments · Fixed by #674
Closed

plantuml plugin requires dot utiliy #630

slachiewicz opened this issue Jan 7, 2025 · 8 comments · Fixed by #674
Labels
enhancement New feature or request maintenance

Comments

@slachiewicz
Copy link
Member

Improvement proposal

GitHub Acton setup should be updated to install utility

https://plantuml.com/graphviz-dot

@slachiewicz slachiewicz added maintenance enhancement New feature or request labels Jan 7, 2025
@slawekjaranowski
Copy link
Member

Do we have it on jenkins installed?

@slawekjaranowski slawekjaranowski added the good first issue Good for newcomers label Jan 14, 2025
@elharo elharo removed the good first issue Good for newcomers label Jan 15, 2025
@slawekjaranowski
Copy link
Member

On GH I see:

java.io.IOException: Cannot run program "/opt/local/bin/dot": error=2, No such file or directory

but on Jenkins not ... so we have installed on Jenkins

@slawekjaranowski slawekjaranowski added the good first issue Good for newcomers label Feb 8, 2025
slawekjaranowski added a commit to slawekjaranowski/maven-site that referenced this issue Feb 8, 2025
slawekjaranowski added a commit to slawekjaranowski/maven-site that referenced this issue Feb 8, 2025
@kwin
Copy link
Member

kwin commented Feb 8, 2025

I would recommend to always rely on https://plantuml.com/smetana02 to keep deps minimal (also for running the build locally).

slawekjaranowski added a commit to slawekjaranowski/maven-site that referenced this issue Feb 8, 2025
@slawekjaranowski
Copy link
Member

@kwin I added one missing !pragma layout smetana - all puml in project have it ... but error still exists in build - please look output of: #676

@slawekjaranowski slawekjaranowski removed the good first issue Good for newcomers label Feb 8, 2025
@kwin
Copy link
Member

kwin commented Feb 8, 2025

@mthmulders Can you have a look why it still emits

java.io.IOException: Cannot run program "/opt/local/bin/dot": error=2, No such file or directory
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
	at net.sourceforge.plantuml.dot.ProcessRunner.run(ProcessRunner.java:70)
	at net.sourceforge.plantuml.dot.ProcessRunner.run(ProcessRunner.java:59)
	at net.sourceforge.plantuml.dot.GraphvizVersionFinder.dotVersion(GraphvizVersionFinder.java:120)
	at net.sourceforge.plantuml.dot.GraphvizVersionFinder.getVersion(GraphvizVersionFinder.java:75)
	at net.sourceforge.plantuml.dot.GraphvizVersions.checkVersionSlow(GraphvizVersions.java:71)
	at net.sourceforge.plantuml.dot.GraphvizVersions.getVersion(GraphvizVersions.java:64)
	at net.sourceforge.plantuml.svek.DotStringFactory.getGraphvizVersionInternal(DotStringFactory.java:276)
	at net.sourceforge.plantuml.svek.DotStringFactory.getGraphvizVersion(DotStringFactory.java:265)
	at net.sourceforge.plantuml.svek.GraphvizImageBuilder.printEntityInternal(GraphvizImageBuilder.java:380)
	at net.sourceforge.plantuml.svek.GraphvizImageBuilder.printEntity(GraphvizImageBuilder.java:362)
	at net.sourceforge.plantuml.svek.GraphvizImageBuilder.printEntities(GraphvizImageBuilder.java:354)
	at net.sourceforge.plantuml.svek.GraphvizImageBuilder.printGroup(GraphvizImageBuilder.java:432)
	at net.sourceforge.plantuml.svek.GraphvizImageBuilder.printGroups(GraphvizImageBuilder.java:421)
	at net.sourceforge.plantuml.svek.GraphvizImageBuilder.buildImage(GraphvizImageBuilder.java:223)
	at net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek.createFileInternal(CucaDiagramFileMakerSvek.java:103)
	at net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek.createFile(CucaDiagramFileMakerSvek.java:69)
	at net.atmp.CucaDiagram.exportDiagramInternal(CucaDiagram.java:475)
	at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:139)
	at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:210)
	at net.sourceforge.plantuml.EmbeddedDiagram.getImageSvg(EmbeddedDiagram.java:211)
	at net.sourceforge.plantuml.EmbeddedDiagram.calculateDimension(EmbeddedDiagram.java:174)
	at net.sourceforge.plantuml.klimt.creole.Sea.add(Sea.java:61)
	at net.sourceforge.plantuml.klimt.creole.SheetBlock1.initMap(SheetBlock1.java:139)
	at net.sourceforge.plantuml.klimt.creole.SheetBlock1.calculateDimension(SheetBlock1.java:188)
	at net.sourceforge.plantuml.klimt.creole.SheetBlock2.calculateDimension(SheetBlock2.java:92)
	at net.sourceforge.plantuml.klimt.shape.TextBlockBordered.getTextHeight(TextBlockBordered.java:80)
	at net.sourceforge.plantuml.klimt.shape.TextBlockBordered.calculateDimension(TextBlockBordered.java:[94](https://github.com/apache/maven-site/actions/runs/13217260866/job/36897983701?pr=676#step:5:95))
	at net.sourceforge.plantuml.klimt.shape.TextBlockMarged.calculateDimension(TextBlockMarged.java:74)
	at net.sourceforge.plantuml.svek.DecorateEntityImage.getTextDim(DecorateEntityImage.java:121)
	at net.sourceforge.plantuml.svek.DecorateEntityImage.drawU(DecorateEntityImage.java:96)
	at net.atmp.ImageBuilder.getFinalDimension(ImageBuilder.java:361)
	at net.atmp.ImageBuilder.writeImageInternal(ImageBuilder.java:252)
	at net.atmp.ImageBuilder.write(ImageBuilder.java:241)
	at net.sourceforge.plantuml.sdot.CucaDiagramFileMakerSmetana.createFileLocked(CucaDiagramFileMakerSmetana.java:447)
	at net.sourceforge.plantuml.sdot.CucaDiagramFileMakerSmetana.createFile(CucaDiagramFileMakerSmetana.java:420)
	at net.atmp.CucaDiagram.exportDiagramInternal(CucaDiagram.java:475)
	at net.sourceforge.plantuml.classdiagram.ClassDiagram.exportDiagramInternal(ClassDiagram.java:83)
	at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:139)
	at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:210)
	at net.sourceforge.plantuml.SourceStringReader.outputImage(SourceStringReader.java:189)
	at net.sourceforge.plantuml.SourceStringReader.outputImage(SourceStringReader.java:147)
	at it.mulders.puml.impl.v1.PlantUMLv1Impl.processDiagram(PlantUMLv1Impl.java:128)
	at it.mulders.puml.impl.v1.PlantUMLv1Impl.processDiagram(PlantUMLv1Impl.java:113)
	at it.mulders.puml.impl.v1.PlantUMLv1Impl.lambda$process$2(PlantUMLv1Impl.java:91)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1858)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at it.mulders.puml.impl.v1.PlantUMLv1Impl.lambda$process$3(PlantUMLv1Impl.java:92)
	at java.base/java.util.Optional.orElseGet(Optional.java:364)
	at it.mulders.puml.impl.v1.PlantUMLv1Impl.process(PlantUMLv1Impl.java:89)
	at it.mulders.puml.plugin.GenerateMojo.execute(GenerateMojo.java:106)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328)
	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174)
	at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75)
	at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162)
	at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:206)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
	at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:2[95](https://github.com/apache/maven-site/actions/runs/13217260866/job/36897983701?pr=676#step:5:96))
	at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:225)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126)
	... 81 more

in https://github.com/apache/maven-site/actions/runs/13217260866/job/36897983701?pr=676, despite all diagrams using smetana?

Also shouldn't such exception lead to a broken build?

@slawekjaranowski
Copy link
Member

IHMO only one was missed - added in #676

@mthmulders
Copy link
Contributor

@mthmulders Can you have a look why it still emits

[snip]

Also shouldn't such exception lead to a broken build?

@kwin It looks like this is emitted from PlantUML itself - my plugin is nothing more than a very thin wrapper around invoking PlantUML directly.

Maybe it was caused by this?

IHMO only one was missed - added in #676

@slawekjaranowski
Copy link
Member

so when we don't know how to avoid exception we should install needed utility

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request maintenance
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants