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

Run from Docker container #1

Open
maxime1992 opened this issue Feb 19, 2022 · 0 comments
Open

Run from Docker container #1

maxime1992 opened this issue Feb 19, 2022 · 0 comments

Comments

@maxime1992
Copy link

Hello, first of all, nice of for building this tool. I hope I can get it to work for me as automating the rendering of my sweet home plans may save me a lot of time!

I wanted to use Docker though for this. I feel like I'm close but not quite managed to get it working.

Create a new folder then touch Dockerfile and paste the following in it:

FROM ubuntu:20.04

ENV DISPLAY :10
ENV DEBIAN_FRONTEND=noninteractive

WORKDIR sweet-home-3d-headless-batch

RUN apt update -y && \
    apt install -y git \
    imagemagick \
    default-jdk \
    software-properties-common \
    unzip \
    curl \
    xvfb

RUN git clone https://github.com/tkvw/groovy.sh3d.bsr groovy-sh3d-bsr

WORKDIR ./groovy-sh3d-bsr

RUN chmod u+x ./gradlew && ./gradlew && ./gradlew prepare

ENTRYPOINT ls -l data && cp ./data/* . && ./gradlew runApp -Pconfig=./home-headless-batch-rendering.yaml

Then build the image with

docker build -t sweet-home-3d-headless-batch .

I've created the sh3d file and the necessary yaml file for this project to work in order to test it:
data.zip

Download the zip file and stick the 2 files in a folder called data for example.

Then run from the folder containing data:

docker run -it --rm -v $(pwd)/data:/sweet-home-3d-headless-batch/groovy-sh3d-bsr/data sweet-home-3d-headless-batch:latest

Main error:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /sweet-home-3d-headless-batch/groovy-sh3d-bsr/natives/linux-amd64//libgluegen-rt.so

Here's the full stacktrace:

Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

> Task :runApp
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/root/.gradle/caches/modules-2/files-2.1/org.codehaus.groovy/groovy/2.5.11/4d8f25c5da08af46fb204fd493ec894699a3f4e8/groovy-2.5.11.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Render picture room_1_on_room_2_off of scenario dawn to /sweet-home-3d-headless-batch/groovy-sh3d-bsr/images/dawn/room_1_on_room_2_off.png
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /sweet-home-3d-headless-batch/groovy-sh3d-bsr/natives/linux-amd64//libgluegen-rt.so
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
        at java.base/java.lang.Runtime.load0(Runtime.java:768)
        at java.base/java.lang.System.load(System.java:1837)
        at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
        at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
        at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
        at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
        at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421)
        at com.jogamp.common.os.Platform$1.run(Platform.java:317)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.common.os.Platform.<clinit>(Platform.java:287)
        at com.jogamp.opengl.GLProfile.<clinit>(GLProfile.java:147)
        at jogamp.opengl.ThreadingImpl$1.run(ThreadingImpl.java:83)
        at jogamp.opengl.ThreadingImpl$1.run(ThreadingImpl.java:66)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at jogamp.opengl.ThreadingImpl.<clinit>(ThreadingImpl.java:66)
        at com.jogamp.opengl.Threading.disableSingleThreading(Threading.java:164)
        at javax.media.j3d.JoglPipeline.initialize(JoglPipeline.java:129)
        at javax.media.j3d.Pipeline.createPipeline(Pipeline.java:92)
        at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:858)
        at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:267)
        at javax.media.j3d.GroupRetained.<init>(GroupRetained.java:155)
        at javax.media.j3d.BranchGroupRetained.<init>(BranchGroupRetained.java:50)
        at javax.media.j3d.BranchGroup.createRetained(BranchGroup.java:72)
        at javax.media.j3d.SceneGraphObject.<init>(SceneGraphObject.java:114)
        at javax.media.j3d.Node.<init>(Node.java:172)
        at javax.media.j3d.Group.<init>(Group.java:551)
        at javax.media.j3d.BranchGroup.<init>(BranchGroup.java:63)
        at com.eteks.sweethome3d.j3d.Object3DBranch.<init>(Unknown Source)
        at com.eteks.sweethome3d.j3d.Wall3D.<init>(Unknown Source)
        at com.eteks.sweethome3d.j3d.Object3DBranchFactory.createObject3D(Unknown Source)
        at com.eteks.sweethome3d.j3d.PhotoRenderer$PhotoObject3DFactory.createObject3D(Unknown Source)
        at com.eteks.sweethome3d.j3d.PhotoRenderer.<init>(Unknown Source)
        at com.eteks.sweethome3d.j3d.PhotoRenderer.<init>(Unknown Source)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80)
        at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:257)
        at nl.tkvw.sh3d.bsr.App$_run_closure3$_closure4.doCall(App.groovy:100)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
        at groovy.lang.Closure.call(Closure.java:405)
        at groovy.lang.Closure.call(Closure.java:421)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2330)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2315)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2356)
        at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:244)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
        at nl.tkvw.sh3d.bsr.App$_run_closure3.doCall(App.groovy:56)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
        at groovy.lang.Closure.call(Closure.java:405)
        at groovy.lang.Closure.call(Closure.java:421)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2330)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2315)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2356)
        at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:244)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
        at nl.tkvw.sh3d.bsr.App.run(App.groovy:52)
        at nl.tkvw.sh3d.bsr.App$run.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
        at nl.tkvw.sh3d.bsr.App.main(App.groovy:31)

> Task :runApp FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':runApp'.
> Process 'command '/usr/lib/jvm/java-11-openjdk-amd64/bin/java'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 30s
2 actionable tasks: 2 executed

Any idea about how to solve this so I can run your project in a Docker image? :)

Regards,

Maxime

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant