Skip to content

Commit 623da0a

Browse files
authored
Merge pull request #451 from juhp/exe-hardlinks
install: create hls hardlinks instead of copies except on Windows
2 parents d4d50a6 + 9d3188e commit 623da0a

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

install/src/Cabal.hs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Development.Shake
55
import Development.Shake.FilePath
66
import Control.Monad
77
import System.Directory ( copyFile )
8+
import System.Info ( os )
89

910
import Version
1011
import Print
@@ -74,9 +75,11 @@ cabalInstallHls versionNumber args = do
7475
let minorVerExe = "haskell-language-server-" ++ versionNumber <.> exe
7576
majorVerExe = "haskell-language-server-" ++ dropExtension versionNumber <.> exe
7677

77-
liftIO $ do
78-
copyFile (localBin </> "haskell-language-server" <.> exe) (localBin </> minorVerExe)
79-
copyFile (localBin </> "haskell-language-server" <.> exe) (localBin </> majorVerExe)
78+
let copyCmd old new = if os == "mingw32"
79+
then liftIO $ copyFile old new
80+
else command [] "ln" ["-f", old, new]
81+
copyCmd (localBin </> "haskell-language-server" <.> exe) (localBin </> minorVerExe)
82+
copyCmd (localBin </> "haskell-language-server" <.> exe) (localBin </> majorVerExe)
8083

8184
printLine $ "Copied executables "
8285
++ ("haskell-language-server-wrapper" <.> exe) ++ ", "
@@ -141,4 +144,3 @@ getVerbosityArg v = "-v" ++ cabalVerbosity
141144
Chatty -> "2"
142145
#endif
143146
Diagnostic -> "3"
144-

install/src/Stack.hs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Development.Shake.FilePath
66
import Control.Monad
77
import System.Directory ( copyFile )
88
-- import System.FilePath ( (</>) )
9+
import System.Info ( os )
910
import Version
1011
import Print
1112

@@ -32,11 +33,13 @@ stackInstallHls mbVersionNumber args = do
3233

3334
localBinDir <- getLocalBin args
3435
let hls = "haskell-language-server" <.> exe
35-
liftIO $ do
36-
copyFile (localBinDir </> hls)
37-
(localBinDir </> "haskell-language-server-" ++ versionNumber <.> exe)
38-
copyFile (localBinDir </> hls)
39-
(localBinDir </> "haskell-language-server-" ++ dropExtension versionNumber <.> exe)
36+
copyCmd old new = if os == "mingw32"
37+
then liftIO $ copyFile old new
38+
else command [] "ln" ["-f", old, new]
39+
copyCmd (localBinDir </> hls)
40+
(localBinDir </> "haskell-language-server-" ++ versionNumber <.> exe)
41+
copyCmd (localBinDir </> hls)
42+
(localBinDir </> "haskell-language-server-" ++ dropExtension versionNumber <.> exe)
4043

4144
getGhcVersionOfCfgFile :: String -> [String] -> Action VersionNumber
4245
getGhcVersionOfCfgFile stackFile args = do

0 commit comments

Comments
 (0)