OSICAT is a Quicklisp library providing an OS interface for Unix platforms.
osicat occassionally causes a build to fail with a message like the following:
| HARD ACL2 ERROR in INCLUDE-RAW: Load of "osicat-raw.lsp" failed with | the following message: | File #P"/var/lib/jenkins/workspace/acl2-testing/books/quicklisp/asdf- | home/cache/common-lisp/ccl-1.12-f98-linux-x64/var/lib/jenkins/workspace/acl2- | testing/books/quicklisp/bundle/software/osicat-20220220-git/src/osicat.lx64fsl | " does not exist.
Check the timestamps of the files
<path-to-acl2>/books/quicklisp/asdf-home/cache/common-lisp/*/<path-to-acl2>/books/quicklisp/bundle/software/osicat-20220220-git/posix/
On Linux, you can use
If the timestamp seconds are different between the two files, this is the
issue. The fix is to update the timestamp of
On Linux, you can update the timestamp with
On macOS, you can perform a relative update of the timestamp, adding one
second with the command:
This build issue may occur when two or more books which depend on osicat are being certified simultaneously. A race condition allows one certification to attempt to read the compiled binary while the other is deleting it to rebuild.
The timestamps are compared to check whether some part of osicat
needs to be rebuilt. Timestamps are truncated internally to the nearest second
and the
Thank you to Eric McCarthy for investigating and debugging this issue.