Skip to content

Commit 8f8b11a

Browse files
committed
Remove v1-sdist
1 parent 3752c3e commit 8f8b11a

File tree

3 files changed

+54
-152
lines changed

3 files changed

+54
-152
lines changed
Lines changed: 51 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,26 @@
1-
{-# LANGUAGE CPP #-}
2-
{-# LANGUAGE NondecreasingIndentation #-}
3-
{-# LANGUAGE FlexibleContexts #-}
4-
-- Implements the \"@.\/cabal sdist@\" command, which creates a source
5-
-- distribution for this package. That is, packs up the source code
6-
-- into a tarball, making use of the corresponding Cabal module.
1+
-- | Utilities to implemenet cabal @v2-sdist@.
72
module Distribution.Client.SrcDist (
8-
sdist,
9-
allPackageSourceFiles
10-
) where
3+
allPackageSourceFiles,
4+
) where
115

126

13-
import Distribution.Client.SetupWrapper
14-
( SetupScriptOptions(..), defaultSetupScriptOptions, setupWrapper )
15-
import Distribution.Client.Tar (createTarGzFile)
7+
import Control.Exception (IOException, evaluate)
8+
import System.Directory (getTemporaryDirectory)
9+
import System.FilePath ((</>))
1610

17-
import Distribution.Package
18-
( Package(..), packageName )
19-
import Distribution.PackageDescription
20-
( PackageDescription )
21-
import Distribution.PackageDescription.Configuration
22-
( flattenPackageDescription )
23-
import Distribution.PackageDescription.Parsec
24-
( readGenericPackageDescription )
25-
import Distribution.Simple.Utils
26-
( createDirectoryIfMissingVerbose, defaultPackageDesc
27-
, warn, notice, withTempDirectory )
28-
import Distribution.Client.Setup
29-
( SDistFlags(..) )
30-
import Distribution.Simple.Setup
31-
( Flag(..), sdistCommand, flagToList, fromFlag, fromFlagOrDefault
32-
, defaultSDistFlags )
33-
import Distribution.Simple.BuildPaths ( srcPref)
34-
import Distribution.Deprecated.Text ( display )
35-
import Distribution.Verbosity (Verbosity, normal, lessVerbose)
36-
import Distribution.Version (mkVersion, orLaterVersion, intersectVersionRanges)
37-
38-
import Distribution.Client.Utils
39-
(tryFindAddSourcePackageDesc)
4011
import Distribution.Compat.Exception (catchIO)
41-
42-
import System.FilePath ((</>), (<.>))
43-
import Control.Monad (when, unless, liftM)
44-
import System.Directory (getTemporaryDirectory)
45-
import Control.Exception (IOException, evaluate)
46-
47-
-- |Create a source distribution.
48-
sdist :: SDistFlags -> IO ()
49-
sdist flags = do
50-
pkg <- liftM flattenPackageDescription
51-
(readGenericPackageDescription verbosity =<< defaultPackageDesc verbosity)
52-
let withDir :: (FilePath -> IO a) -> IO a
53-
withDir = if not needMakeArchive then \f -> f tmpTargetDir
54-
else withTempDirectory verbosity tmpTargetDir "sdist."
55-
-- 'withTempDir' fails if we don't create 'tmpTargetDir'...
56-
when needMakeArchive $
57-
createDirectoryIfMissingVerbose verbosity True tmpTargetDir
58-
withDir $ \tmpDir -> do
59-
let outDir = if isOutDirectory then tmpDir else tmpDir </> tarBallName pkg
60-
flags' = (if not needMakeArchive then flags
61-
else flags { sDistDirectory = Flag outDir })
62-
unless isListSources $
63-
createDirectoryIfMissingVerbose verbosity True outDir
64-
65-
-- Run 'setup sdist --output-directory=tmpDir' (or
66-
-- '--list-source'/'--output-directory=someOtherDir') in case we were passed
67-
-- those options.
68-
setupWrapper verbosity setupOpts (Just pkg) sdistCommand (const flags') (const [])
69-
70-
-- Unless we were given --list-sources or --output-directory ourselves,
71-
-- create an archive.
72-
when needMakeArchive $
73-
createTarGzArchive verbosity pkg tmpDir distPref
74-
75-
when isOutDirectory $
76-
notice verbosity $ "Source directory created: " ++ tmpTargetDir
77-
78-
when isListSources $
79-
notice verbosity $ "List of package sources written to file '"
80-
++ (fromFlag . sDistListSources $ flags) ++ "'"
81-
82-
where
83-
flagEnabled f = not . null . flagToList . f $ flags
84-
85-
isListSources = flagEnabled sDistListSources
86-
isOutDirectory = flagEnabled sDistDirectory
87-
needMakeArchive = not (isListSources || isOutDirectory)
88-
verbosity = fromFlag (sDistVerbosity flags)
89-
distPref = fromFlag (sDistDistPref flags)
90-
tmpTargetDir = fromFlagOrDefault (srcPref distPref) (sDistDirectory flags)
91-
setupOpts = defaultSetupScriptOptions {
92-
useDistPref = distPref,
93-
-- The '--output-directory' sdist flag was introduced in Cabal 1.12, and
94-
-- '--list-sources' in 1.17.
95-
useCabalVersion = if isListSources
96-
then orLaterVersion $ mkVersion [1,17,0]
97-
else orLaterVersion $ mkVersion [1,12,0]
98-
}
99-
100-
tarBallName :: PackageDescription -> String
101-
tarBallName = display . packageId
102-
103-
-- | Create a tar.gz archive from a tree of source files.
104-
createTarGzArchive :: Verbosity -> PackageDescription -> FilePath -> FilePath
105-
-> IO ()
106-
createTarGzArchive verbosity pkg tmpDir targetPref = do
107-
createTarGzFile tarBallFilePath tmpDir (tarBallName pkg)
108-
notice verbosity $ "Source tarball created: " ++ tarBallFilePath
109-
where
110-
tarBallFilePath = targetPref </> tarBallName pkg <.> "tar.gz"
12+
import Distribution.Package (packageName)
13+
import Distribution.PackageDescription.Configuration (flattenPackageDescription)
14+
import Distribution.PackageDescription.Parsec (readGenericPackageDescription)
15+
import Distribution.Pretty (prettyShow)
16+
import Distribution.Simple.Setup (Flag (..), defaultSDistFlags, sdistCommand)
17+
import Distribution.Simple.Utils (warn, withTempDirectory)
18+
import Distribution.Verbosity (Verbosity, lessVerbose, normal)
19+
import Distribution.Version (intersectVersionRanges, mkVersion, orLaterVersion)
20+
21+
import Distribution.Client.Setup (SDistFlags (..))
22+
import Distribution.Client.SetupWrapper (SetupScriptOptions (..), setupWrapper)
23+
import Distribution.Client.Utils (tryFindAddSourcePackageDesc)
11124

11225
-- | List all source files of a given add-source dependency. Exits with error if
11326
-- something is wrong (e.g. there is no .cabal file in the given directory).
@@ -120,36 +33,36 @@ allPackageSourceFiles verbosity setupOpts0 packageDir = do
12033
flattenPackageDescription `fmap` readGenericPackageDescription verbosity desc
12134
globalTmp <- getTemporaryDirectory
12235
withTempDirectory verbosity globalTmp "cabal-list-sources." $ \tempDir -> do
123-
let file = tempDir </> "cabal-sdist-list-sources"
124-
flags = defaultSDistFlags {
125-
sDistVerbosity = Flag $ if verbosity == normal
126-
then lessVerbose verbosity else verbosity,
127-
sDistListSources = Flag file
128-
}
129-
setupOpts = setupOpts0 {
130-
-- 'sdist --list-sources' was introduced in Cabal 1.18.
131-
useCabalVersion = intersectVersionRanges
132-
(orLaterVersion $ mkVersion [1,18,0])
133-
(useCabalVersion setupOpts0),
134-
useWorkingDir = Just packageDir
135-
}
136-
137-
doListSources :: IO [FilePath]
138-
doListSources = do
139-
setupWrapper verbosity setupOpts (Just pkg) sdistCommand (const flags) (const [])
140-
fmap lines . readFile $ file
141-
142-
onFailedListSources :: IOException -> IO ()
143-
onFailedListSources e = do
144-
warn verbosity $
145-
"Could not list sources of the package '"
146-
++ display (packageName pkg) ++ "'."
147-
warn verbosity $
148-
"Exception was: " ++ show e
149-
150-
-- Run setup sdist --list-sources=TMPFILE
151-
r <- doListSources `catchIO` (\e -> onFailedListSources e >> return [])
152-
-- Ensure that we've closed the 'readFile' handle before we exit the
153-
-- temporary directory.
154-
_ <- evaluate (length r)
155-
return r
36+
let file = tempDir </> "cabal-sdist-list-sources"
37+
flags = defaultSDistFlags {
38+
sDistVerbosity = Flag $ if verbosity == normal
39+
then lessVerbose verbosity else verbosity,
40+
sDistListSources = Flag file
41+
}
42+
setupOpts = setupOpts0 {
43+
-- 'sdist --list-sources' was introduced in Cabal 1.18.
44+
useCabalVersion = intersectVersionRanges
45+
(orLaterVersion $ mkVersion [1,18,0])
46+
(useCabalVersion setupOpts0),
47+
useWorkingDir = Just packageDir
48+
}
49+
50+
doListSources :: IO [FilePath]
51+
doListSources = do
52+
setupWrapper verbosity setupOpts (Just pkg) sdistCommand (const flags) (const [])
53+
fmap lines . readFile $ file
54+
55+
onFailedListSources :: IOException -> IO ()
56+
onFailedListSources e = do
57+
warn verbosity $
58+
"Could not list sources of the package '"
59+
++ prettyShow (packageName pkg) ++ "'."
60+
warn verbosity $
61+
"Exception was: " ++ show e
62+
63+
-- Run setup sdist --list-sources=TMPFILE
64+
r <- doListSources `catchIO` (\e -> onFailedListSources e >> return [])
65+
-- Ensure that we've closed the 'readFile' handle before we exit the
66+
-- temporary directory.
67+
_ <- evaluate (length r)
68+
return r

cabal-install/main/Main.hs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import Distribution.Client.Setup
3939
, ReportFlags(..), reportCommand
4040
, runCommand
4141
, InitFlags(initVerbosity, initHcPath), initCommand
42-
, SDistFlags(..), sdistCommand
4342
, Win32SelfUpgradeFlags(..), win32SelfUpgradeCommand
4443
, ActAsSetupFlags(..), actAsSetupCommand
4544
, SandboxFlags(..), sandboxCommand
@@ -107,7 +106,6 @@ import Distribution.Client.Check as Check (check)
107106
--import Distribution.Client.Clean (clean)
108107
import qualified Distribution.Client.Upload as Upload
109108
import Distribution.Client.Run (run, splitRunArgs)
110-
import Distribution.Client.SrcDist (sdist)
111109
import Distribution.Client.Get (get)
112110
import Distribution.Client.Reconfigure (Check(..), reconfigure)
113111
import Distribution.Client.Nix (nixInstantiate
@@ -309,7 +307,6 @@ mainWorker args = do
309307
, legacyCmd benchmarkCommand benchmarkAction
310308
, legacyCmd execCommand execAction
311309
, legacyCmd cleanCommand cleanAction
312-
, legacyCmd sdistCommand sdistAction
313310
, legacyCmd doctestCommand doctestAction
314311
, legacyWrapperCmd copyCommand copyVerbosity copyDistPref
315312
, legacyWrapperCmd registerCommand regVerbosity regDistPref
@@ -1050,17 +1047,6 @@ uninstallAction verbosityFlag extraArgs _globalFlags = do
10501047
++ "in the meantime you're advised to use either 'ghc-pkg unregister "
10511048
++ package ++ "' or 'cabal sandbox hc-pkg -- unregister " ++ package ++ "'."
10521049

1053-
1054-
sdistAction :: SDistFlags -> [String] -> Action
1055-
sdistAction sdistFlags extraArgs globalFlags = do
1056-
let verbosity = fromFlag (sDistVerbosity sdistFlags)
1057-
unless (null extraArgs) $
1058-
die' verbosity $ "'sdist' doesn't take any extra arguments: " ++ unwords extraArgs
1059-
load <- try (loadConfigOrSandboxConfig verbosity globalFlags)
1060-
let config = either (\(SomeException _) -> mempty) snd load
1061-
distPref <- findSavedDistPref config (sDistDistPref sdistFlags)
1062-
sdist sdistFlags { sDistDistPref = toFlag distPref }
1063-
10641050
reportAction :: ReportFlags -> [String] -> Action
10651051
reportAction reportFlags extraArgs globalFlags = do
10661052
let verbosity = fromFlag (reportVerbosity reportFlags)

changelog.d/issue-6635

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
synopsis: Remove `v1-sdist` command.
2+
issues: #6635
3+
prs: #6637

0 commit comments

Comments
 (0)