- implement a handler for check_vnode_clone
- add a test (to the example build) that ensures that clone operations are properly detected
- add a test (to the example build) that ensure that obscure writes via sourcing csh scripts are detected
- publish and sign a new kext
AB#1607992
The implementation for Windows remains the same and continues to use magic timestamps.
On Mac, instead of timestamps extended attributes are used. Concretely, a file is a shared opaque output IFF it has a com.microsoft.buildxl:shared_opaque_output attribute and it's value is equal to 42 (at some point in the future we could insert a more meaningful value here, e.g., PipId)
AB#1607996
New classes:
- CsvFileLog: an ILog class that writes log messages to a CSV file and formats them according to a given schema
- KustoUploader: a class responsible for asynchronously receiving CSV files and ingesting them into a Kusto table
Special handling for directory rename.
Scenario: a pip writes a bunch of files into a directory (e.g., 'out.tmp') and then renames that directory (e.g., to 'out'). Once 'out.tmp' is renamed to 'out', we need to explicitly update all previously reported paths under 'out.tmp'. Since we cannot change the past and directly mutate previously reported paths, we simply enumerate the content of the renamed directory and report all the files in there as writes. This is exactly how this is done on Windows, except that it's implemented in the Detours layer.
AB#1362637
The idea is that all build outputs, no matter which pip produced them, have the special timestamps as long as they are under a shared opaque directory.
Before this change, pips that explicitly declare one or more shared opaque directories, their outputs that are under any of those directories are marked with the special timestamps.
What's possible is that there are some other pips (e.g., CopyFile or WriteFile) that produce additional files into those same shared opaque directories. Those files were not marked with the special timestamps; consequently, if those files become stale, the scrubber will fail to delete them before the build, which can cause problems downstream.
With this PR, all build outputs that end up being under any declared shared opaque output directory will have the special timestamps.
AB#1472511
* Restore all script exec permissions, update Readme.md with better macOS instructions
* Always run sandboxed when building internal
* Exec permission adjustment for all scripts