Blob Blame History Raw
--- 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