12345678910111213141516171819202122232425262728293031323334353637383940(**************************************************************************)(* *)(* Copyright 2012-2015 OCamlPro *)(* Copyright 2012 INRIA *)(* *)(* All rights reserved. This file is distributed under the terms of the *)(* GNU Lesser General Public License version 2.1, with the special *)(* exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)includeOpamStd.AbstractStringletunset=of_string"#unset#"letis_externals=OpamStd.String.starts_with~prefix:"."s||OpamStd.String.contains~sub:Filename.dir_sepsletexternal_dirname="_opam"letof_strings=ifis_externalsthenOpamFilename.Dir.(to_string(of_strings))elsesletof_dirnamed=lets=OpamFilename.Dir.to_stringdintryletswdir=Unix.readlink(Filename.concatsexternal_dirname)inletswdir=ifFilename.is_relativeswdirthenFilename.concatsswdirelseswdirinletr=OpamSystem.real_pathswdirinifFilename.basenamer=external_dirnamethenFilename.dirnamerelseswithUnix.Unix_error_->sletget_rootroots=ifis_externalsthenOpamFilename.Dir.of_string(Filename.concatsexternal_dirname)elseOpamFilename.Op.(root/s)