Downloading Doxygen 1.8.15 from its website is very, very slow, and the
doxygen package in Ubuntu's repositories no longer installs latex (or
maybe I made a mistake with that before?).
Travis CI have migrated away from running builds in Docker containers,
and no longer link to their old Docker image, so describe the
prerequisites and assumptions as accurately as possible.
MSVC's implementation of std::filesystem::is_symlink throws if
given a perfectly valid path, saying
"symlink_status: The parameter is incorrect."
This appears to be a bug in the implementation, though I can't
reproduce it.
In Windows, std::filesystem::equivalent throws
std::system_error if a path contains characters that can't be
represented in the system code page (e.g. Windows 1252). This is
undocumented and seems unnecessary as Microsoft's own docs say Windows
paths are stored natively in Unicode, so it sounds like a bug to me.
To work around this, return true early if the path objects are equal,
so std::filesystem::equivalent doesn't need to be called, and catch
system_error if it does need to be called - this may result in false
negatives, but for LOOT's purposes that is fine and is very unlikely
anyway.