Skip to content

Feedback requested: what would be the impact of deleting System.PosixCompat.User from unix-compat? #6069

@mitchellwrosen

Description

@mitchellwrosen

Hi there,

I've recently taken over maintainership of unix-compat, and I intend to push out a unix-2.8-compatible release as soon as I can. One remaining issue is what to make of the System.PosixCompat.User module, as the UserEntry type has changed.

Here is the first PR that attempts to graft over the differences: https://github.com/jacobstanley/unix-compat/pull/60/files

And here is my preferred solution, to delete the System.PosixCompat.User module entirely, based on the observation that System.PosixCompat.User doesn't seem useful at all, as all functions either return dummy data or throw exceptions: jacobstanley/unix-compat#62

However, I see that stack and yi-core actually use this module. For example:

stack/src/Stack/Config.hs

Lines 888 to 899 in 835318b

-- | Check whether the current user (determined with 'getEffectiveUserId') is
-- the owner for the given path.
--
-- Will always pure 'True' on Windows.
isOwnedByUser :: MonadIO m => Path Abs t -> m Bool
isOwnedByUser path = liftIO $
if osIsWindows
then pure True
else do
fileStatus <- getFileStatus (toFilePath path)
user <- getEffectiveUserID
pure (user == fileOwner fileStatus)

This code looks dubious to me: it claims to always return True on Windows, yet I believe it instead always throws an exception on Windows, which may be getting swallowed somewhere else.

But there are other uses, too, in Stack/Docker.hs. So, could you please consider the effect of deleting System.PosixCompat.User on the stack codebase, and let me know if that is a reasonable option, or if you'd rather see a different approach to unix-2.8 support?

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions