--- cabal-install-2.4.1.0/Distribution/Client/CmdSdist.hs.orig 1970-01-01 07:30:00.000000000 +0730
+++ cabal-install-2.4.1.0/Distribution/Client/CmdSdist.hs 2020-04-14 13:08:58.730089942 +0800
@@ -84,7 +84,8 @@
import qualified Data.Set as Set
import System.Directory
( getCurrentDirectory, setCurrentDirectory
- , createDirectoryIfMissing, makeAbsolute )
+ , createDirectoryIfMissing, makeAbsolute
+ , getPermissions, executable )
import System.FilePath
( (</>), (<.>), makeRelative, normalise, takeDirectory )
@@ -269,10 +270,11 @@
Right path -> tell [Tar.directoryEntry path]
forM_ files $ \(perm, file) -> do
+ realPerm <- liftIO $ getPermissions file
let fileDir = takeDirectory (prefix </> file)
perm' = case perm of
- Exec -> Tar.executableFilePermissions
- NoExec -> Tar.ordinaryFilePermissions
+ Exec | executable realPerm -> Tar.executableFilePermissions
+ _ -> Tar.ordinaryFilePermissions
needsEntry <- gets (Set.notMember fileDir)
when needsEntry $ do