ktock / container2wasm

Container to WASM converter
https://ktock.github.io/container2wasm-demo/
Apache License 2.0
1.97k stars 72 forks source link

genisoimage: Error / mkisofs / Joliet tree sort failed. `-joliet-long` switch may help you. #263

Open ken-okabe opened 4 months ago

ken-okabe commented 4 months ago

Hi, thank you for this great product.

Basically, I try to make dotnet wasm.

Dockerfile

FROM archlinux:latest

RUN pacman -Syu --noconfirm && \
    pacman -S --noconfirm zsh nodejs npm git wget && \
    wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh && \
    sh ./dotnet-install.sh -v 8.0.201 && \
    export DOTNET_ROOT=$HOME/.dotnet && \
    export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

sudo c2w foo arch-zsh-node-dotnet8.wasm

then, here is a build error:

3.091 genisoimage: Error: /rootfs/oci/rootfs/root/.dotnet/sdk/8.0.201/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.5_0.targets and /rootfs/oci/rootfs/root/.dotnet/sdk/8.0.201/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.targets have the same Joliet name
3.091 Joliet tree sort failed. The -joliet-long switch may help you.
------
container2wasm3626668171:402
--------------------
 400 |     COPY --link --from=tini-amd64-dev /out/tini /rootfs/sbin/tini
 401 |     RUN mkdir -p /rootfs/proc /rootfs/sys /rootfs/mnt /rootfs/run /rootfs/tmp /rootfs/dev /rootfs/var /rootfs/etc && mknod /rootfs/dev/null c 1 3 && chmod 666 /rootfs/dev/null
 402 | >>> RUN mkdir /out/ && mkisofs -l -J -R -o /out/rootfs.bin /rootfs/
 403 |     # RUN isoinfo -i /out/rootfs.bin -l
 404 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c mkdir /out/ && mkisofs -l -J -R -o /out/rootfs.bin /rootfs/" did not complete successfully: exit code: 1
exit status 1

As the error says:

/rootfs/oci/rootfs/root/.dotnet/sdk/8.0.201/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.5_0.targets

and

/rootfs/oci/rootfs/root/.dotnet/sdk/8.0.201/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.targets

have the same Joliet name, and Joliet tree sort failed.

The -joliet-long switch of mkisofs / genisoimage may help.


Before I use my own Dockerfile, I've tried the official dotnet container images:

https://github.com/devcontainers/images/tree/main/src/dotnet

and hit the same error, therefore this error seems inevitable.

Is there any possible work-around?

Thank you.

ken-okabe commented 4 months ago

https://github.com/ktock/container2wasm/blob/main/Dockerfile

402 | >>> RUN mkdir /out/ && mkisofs -l -J -R -o /out/rootfs.bin /rootfs/

Actually, I modified this line to add -joliet-long option, then re-make the c2w and the build process finished without the error.

I think it may be good to add the -joliet-long option to c2w also.

ktock commented 4 months ago

Thanks for reporting this issue and the workaround.

I think it may be good to add the -joliet-long option to c2w also.

SGTM