Judger plugin(or language support) is just a tarball with extension(.lang)
We should remove all hardlink in official plugin, so judger won't emit warning to confuse user.
State of art on plugin packaging
When we package official plugin, we use docker export to export a unix-like filesystem in tarball.
There are three type of entry in tarball:
- regular file
- symlink: mapped to filesystem in tarball
- hardlink: should not be mapped to outside world
In current implementation, hardlink would cause judger to emit warning(because hardlink won't be mapped), and accessing it would cause KMEM error.
In addition, docker export treat common device as hardlink, including /dev/null, /dev/random, and our implementation provide such device, so it normally safe to remove.
We should remove all hardlink in official plugin, so judger won't emit warning to confuse user.
State of art on plugin packaging
When we package official plugin, we use
docker exportto export a unix-like filesystem in tarball.There are three type of entry in tarball:
In current implementation, hardlink would cause judger to emit warning(because hardlink won't be mapped), and accessing it would cause KMEM error.
In addition,
docker exporttreat common device as hardlink, including/dev/null,/dev/random, and our implementation provide such device, so it normally safe to remove.