Skip to content
Snippets Groups Projects
  • Eelco Dolstra's avatar
    276a40b3
    Handle case collisions on case-insensitive systems · 276a40b3
    Eelco Dolstra authored
    When running NixOps under Mac OS X, we need to be able to import store
    paths built on Linux into the local Nix store. However, HFS+ is
    usually case-insensitive, so if there are directories with file names
    that differ only in case, then importing will fail.
    
    The solution is to add a suffix ("~nix~case~hack~<integer>") to
    colliding files. For instance, if we have a directory containing
    xt_CONNMARK.h and xt_connmark.h, then the latter will be renamed to
    "xt_connmark.h~nix~case~hack~1". If a store path is dumped as a NAR,
    the suffixes are removed. Thus, importing and exporting via a
    case-insensitive Nix store is round-tripping. So when NixOps calls
    nix-copy-closure to copy the path to a Linux machine, you get the
    original file names back.
    
    Closes #119.
    276a40b3
    History
    Handle case collisions on case-insensitive systems
    Eelco Dolstra authored
    When running NixOps under Mac OS X, we need to be able to import store
    paths built on Linux into the local Nix store. However, HFS+ is
    usually case-insensitive, so if there are directories with file names
    that differ only in case, then importing will fail.
    
    The solution is to add a suffix ("~nix~case~hack~<integer>") to
    colliding files. For instance, if we have a directory containing
    xt_CONNMARK.h and xt_connmark.h, then the latter will be renamed to
    "xt_connmark.h~nix~case~hack~1". If a store path is dumped as a NAR,
    the suffixes are removed. Thus, importing and exporting via a
    case-insensitive Nix store is round-tripping. So when NixOps calls
    nix-copy-closure to copy the path to a Linux machine, you get the
    original file names back.
    
    Closes #119.
case.nar 2.36 KiB