buytenh / ivykis

GNU Lesser General Public License v2.1
24 stars 18 forks source link

Colliding case-sensitive file paths on a case-insensitive filesystem #36

Open HofiOne opened 1 month ago

HofiOne commented 1 month ago

git clone https://github.com/buytenh/ivykis.git .

Cloning into '.'... remote: Enumerating objects: 5440, done. remote: Counting objects: 100% (161/161), done. remote: Compressing objects: 100% (69/69), done. remote: Total 5440 (delta 98), reused 153 (delta 92), pack-reused 5279 Receiving objects: 100% (5440/5440), 3.04 MiB | 452.00 KiB/s, done. Resolving deltas: 100% (3468/3468), done. warning: the following paths have collided (e.g. case-sensitive paths on a case-insensitive filesystem) and only one from the same colliding group is in the working tree:

'man3/IV_FD_PUMP_INIT.3' 'man3/iv_fd_pump_init.3'

buytenh commented 1 month ago

This came up previously: https://github.com/buytenh/ivykis/issues/7

How do you suggest we address this?

HofiOne commented 1 month ago

I cannot see here why the capital versions are needed at all, probably using only the lowercase versions can be a fool-proof solution (but, I guess it is intentional for some reason the doubled files)

buytenh commented 1 month ago

IV_FD_PUMP_INIT() is a macro to pre-initialize a struct iv_fd_pump object, and iv_fd_pump_init() is a function to finalize the initialization -- in other words, they are distinct entities, and on case sensitive filesystems, they therefore require distinct man pages.

HofiOne commented 1 month ago

I see, thanks for the explanation. I guess the manpages (and their names) are auto-generated, but probably there might be an option to specify a custom name for a given item

HofiOne commented 1 month ago

The problem we have currently is that if the dist release tar.gz is created on a case-sensitive filesystem, but the package is being built on a case-insensitive one later (like the default macOS) then at the unpacking only one of the files remains (usually the capital one).

This can lead to the issue described in #7.

What I suggest is to use different file names and explicitly move/rename/delete as needed during the make phase depending on the filesystem case sensitivity.