Skip to content

Commit

Permalink
Fix sdist so that it preserves executable permissions
Browse files Browse the repository at this point in the history
Needed for ./configure scripts etc.
  • Loading branch information
dcoutts committed Feb 19, 2009
1 parent d64bb03 commit dd4d4af
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
14 changes: 11 additions & 3 deletions Distribution/Simple/SrcDist.hs
Expand Up @@ -78,10 +78,10 @@ import Distribution.Version
( Version(versionBranch), VersionRange(AnyVersion) ) ( Version(versionBranch), VersionRange(AnyVersion) )
import Distribution.Simple.Utils import Distribution.Simple.Utils
( createDirectoryIfMissingVerbose, withUTF8FileContents, writeUTF8File ( createDirectoryIfMissingVerbose, withUTF8FileContents, writeUTF8File
, copyFiles, copyFileVerbose , copyFiles
, findFile, findFileWithExtension, matchFileGlob , findFile, findFileWithExtension, matchFileGlob
, withTempDirectory, defaultPackageDesc , withTempDirectory, defaultPackageDesc
, die, warn, notice, setupMessage ) , die, warn, notice, setupMessage, info )
import Distribution.Simple.Setup (SDistFlags(..), fromFlag) import Distribution.Simple.Setup (SDistFlags(..), fromFlag)
import Distribution.Simple.PreProcess (PPSuffixHandler, ppSuffixes, preprocessSources) import Distribution.Simple.PreProcess (PPSuffixHandler, ppSuffixes, preprocessSources)
import Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..) ) import Distribution.Simple.LocalBuildInfo ( LocalBuildInfo(..) )
Expand All @@ -96,7 +96,7 @@ import Data.Char (toLower)
import Data.List (partition, isPrefixOf) import Data.List (partition, isPrefixOf)
import Data.Maybe (isNothing, catMaybes) import Data.Maybe (isNothing, catMaybes)
import System.Time (getClockTime, toCalendarTime, CalendarTime(..)) import System.Time (getClockTime, toCalendarTime, CalendarTime(..))
import System.Directory (doesFileExist, doesDirectoryExist) import System.Directory (doesFileExist, doesDirectoryExist, copyFile)
import Distribution.Verbosity (Verbosity) import Distribution.Verbosity (Verbosity)
import System.FilePath import System.FilePath
( (</>), (<.>), takeDirectory, dropExtension, isAbsolute ) ( (</>), (<.>), takeDirectory, dropExtension, isAbsolute )
Expand Down Expand Up @@ -342,6 +342,14 @@ copyFileTo verbosity dir file = do
createDirectoryIfMissingVerbose verbosity True (takeDirectory targetFile) createDirectoryIfMissingVerbose verbosity True (takeDirectory targetFile)
copyFileVerbose verbosity file targetFile copyFileVerbose verbosity file targetFile


copyFileVerbose :: Verbosity -> FilePath -> FilePath -> IO ()
copyFileVerbose verbosity src dest = do
info verbosity ("copy " ++ src ++ " to " ++ dest)
--Note: This is the standard copyFile that *does* copy file permissions.
-- In particular it will copy executable permissions which we need
-- eg to copy ./configure scripts into the tarball src tree.
copyFile src dest

printPackageProblems :: Verbosity -> PackageDescription -> IO () printPackageProblems :: Verbosity -> PackageDescription -> IO ()
printPackageProblems verbosity pkg_descr = do printPackageProblems verbosity pkg_descr = do
ioChecks <- checkPackageFiles pkg_descr "." ioChecks <- checkPackageFiles pkg_descr "."
Expand Down
6 changes: 4 additions & 2 deletions Distribution/Simple/Utils.hs
Expand Up @@ -127,7 +127,8 @@ import Data.Bits
( Bits((.|.), (.&.), shiftL, shiftR) ) ( Bits((.|.), (.&.), shiftL, shiftR) )


import System.Directory import System.Directory
( getDirectoryContents, doesDirectoryExist, doesFileExist, removeFile ) ( getDirectoryContents, doesDirectoryExist, doesFileExist, removeFile
, copyFile )
import System.Environment import System.Environment
( getProgName ) ( getProgName )
import System.Cmd import System.Cmd
Expand Down Expand Up @@ -531,7 +532,8 @@ copyFiles verbosity targetDir srcFiles = do
-- Copy all the files -- Copy all the files
sequence_ [ let src = srcBase </> srcFile sequence_ [ let src = srcBase </> srcFile
dest = targetDir </> srcFile dest = targetDir </> srcFile
in copyFileVerbose verbosity src dest in info verbosity ("copy " ++ src ++ " to " ++ dest)
>> copyFile src dest
| (srcBase, srcFile) <- srcFiles ] | (srcBase, srcFile) <- srcFiles ]


-- adaptation of removeDirectoryRecursive -- adaptation of removeDirectoryRecursive
Expand Down

0 comments on commit dd4d4af

Please sign in to comment.