On Tue, Feb 3, 2015 at 8:47 AM, David Macek <[email protected]> wrote:
> Hi all.
>
> The issue is that pacman refuses to replace a file during package upgrade if 
> the case of the file's name has changed between versions. The error displayed 
> is this:
>
>> error: failed to commit transaction (conflicting files)
>> example2: /path/to/file exists in filesystem
>> Errors occurred, no packages were upgraded.
>
> I'm using pacman on Windows/NTFS (ported as part of the MSYS2 project). I'm 
> not completely sure if the problem is in upstream pacman, or only in the 
> ported one, but it's happened enough times to prompt me to ask you people. I 
> don't fully understand _alpm_db_find_fileconflicts, but it seems that it 
> can't discover that the conflicting file will be removed with the old version 
> of the package before an actual conflict can occur.
>
> Would this be considered as a bug in pacman?
>
> For the whole log (not much longer) and example PKGBUILDs, look here: 
> https://gist.github.com/elieux/8faaf423601d7ef01d0f
>
> Note that NTFS while is not case-sensitive by default, it is case-preserving.

This is a quick response without diving into the code, but from what I
remember and can offer:

1. If you could provide debug-level logs using `--debug`, that will
make everything easier to troubleshoot. Your test case is very useful
though, and can potentially even be turned into a pactest case later
if this really wants to get solved.
2. "Does file exist" checks use either stat() or access(), which
likely do the right thing with regards to case-sensitivity. However,
pacman internally knows nothing about "are these two paths the same"
characteristics of a particular filesystem. It simply uses strcmp() to
see if they are identical.
3. There are a lot of assumptions related to #2 in the codebase, but
in theory, we could look at a path, get filesystem info (statfs) for
that path, and then decide if we should be case sensitive or
insensitive when doing operations here.
4. Given the scope of #3, I wouldn't so much call this a bug as an
unimplemented feature.
5. It is awesome that you are using pacman in a non-Arch setting! I
think Allan/Dave/Andrew/current maintainers would definitely accept
patches for better support for MSYS in "upstream" pacman as long as
they don't have a negative impact on Arch usage, and this would also
save you the burden of maintaining a large patchset and merging
upstream all the time.

-Dan, maintainer alumnus

Reply via email to