Add darwin notarisation
This commit is contained in:
		
							parent
							
								
									c106dd3f65
								
							
						
					
					
						commit
						1455c2c175
					
				@ -588,11 +588,14 @@ main = do
 | 
			
		||||
                    @'[ AlreadyInstalled
 | 
			
		||||
                      , BuildFailed
 | 
			
		||||
                      , DigestError
 | 
			
		||||
                      , DistroNotFound
 | 
			
		||||
                      , DownloadFailed
 | 
			
		||||
                      , GHCupSetError
 | 
			
		||||
                      , NoCompatibleArch
 | 
			
		||||
                      , NoCompatiblePlatform
 | 
			
		||||
                      , NoDownload
 | 
			
		||||
                      , PatchFailed
 | 
			
		||||
                      , UnknownArchive
 | 
			
		||||
                      , DownloadFailed
 | 
			
		||||
                      ]
 | 
			
		||||
 | 
			
		||||
          let runCompileCabal =
 | 
			
		||||
@ -600,12 +603,15 @@ main = do
 | 
			
		||||
                  . flip runReaderT settings
 | 
			
		||||
                  . runResourceT
 | 
			
		||||
                  . runE
 | 
			
		||||
                    @'[ UnknownArchive
 | 
			
		||||
                      , NoDownload
 | 
			
		||||
                    @'[ BuildFailed
 | 
			
		||||
                      , DigestError
 | 
			
		||||
                      , BuildFailed
 | 
			
		||||
                      , PatchFailed
 | 
			
		||||
                      , DistroNotFound
 | 
			
		||||
                      , DownloadFailed
 | 
			
		||||
                      , NoCompatibleArch
 | 
			
		||||
                      , NoCompatiblePlatform
 | 
			
		||||
                      , NoDownload
 | 
			
		||||
                      , PatchFailed
 | 
			
		||||
                      , UnknownArchive
 | 
			
		||||
                      ]
 | 
			
		||||
 | 
			
		||||
          let runUpgrade =
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								lib/GHCup.hs
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								lib/GHCup.hs
									
									
									
									
									
								
							@ -96,14 +96,16 @@ installGHCBin bDls ver mpfReq = do
 | 
			
		||||
  whenM (liftIO $ toolAlreadyInstalled GHC ver)
 | 
			
		||||
    $ (throwE $ AlreadyInstalled GHC ver)
 | 
			
		||||
  Settings {..} <- lift ask
 | 
			
		||||
  pfreq@(PlatformRequest {..}) <- maybe (liftE $ platformRequest) pure mpfReq
 | 
			
		||||
 | 
			
		||||
  -- download (or use cached version)
 | 
			
		||||
  dlinfo        <- liftE $ getDownloadInfo bDls GHC ver mpfReq
 | 
			
		||||
  dlinfo        <- lE $ getDownloadInfo GHC ver pfreq bDls
 | 
			
		||||
  dl            <- liftE $ downloadCached dlinfo Nothing
 | 
			
		||||
 | 
			
		||||
  -- unpack
 | 
			
		||||
  tmpUnpack     <- lift mkGhcupTmpDir
 | 
			
		||||
  liftE $ unpackToDir tmpUnpack dl
 | 
			
		||||
  void $ liftIO $ darwinNotarization _rPlatform tmpUnpack
 | 
			
		||||
 | 
			
		||||
  -- prepare paths
 | 
			
		||||
  ghcdir <- liftIO $ ghcupGHCDir ver
 | 
			
		||||
@ -170,14 +172,16 @@ installCabalBin :: ( MonadMask m
 | 
			
		||||
installCabalBin bDls ver mpfReq = do
 | 
			
		||||
  lift $ $(logDebug) [i|Requested to install cabal version #{ver}|]
 | 
			
		||||
  Settings {..} <- lift ask
 | 
			
		||||
  pfreq@(PlatformRequest {..}) <- maybe (liftE $ platformRequest) pure mpfReq
 | 
			
		||||
 | 
			
		||||
  -- download (or use cached version)
 | 
			
		||||
  dlinfo        <- liftE $ getDownloadInfo bDls Cabal ver mpfReq
 | 
			
		||||
  dlinfo        <- lE $ getDownloadInfo Cabal ver pfreq bDls
 | 
			
		||||
  dl            <- liftE $ downloadCached dlinfo Nothing
 | 
			
		||||
 | 
			
		||||
  -- unpack
 | 
			
		||||
  tmpUnpack     <- lift withGHCupTmpDir
 | 
			
		||||
  liftE $ unpackToDir tmpUnpack dl
 | 
			
		||||
  void $ liftIO $ darwinNotarization _rPlatform tmpUnpack
 | 
			
		||||
 | 
			
		||||
  -- prepare paths
 | 
			
		||||
  bindir <- liftIO ghcupBinDir
 | 
			
		||||
@ -444,8 +448,11 @@ compileGHC :: ( MonadMask m
 | 
			
		||||
                '[ AlreadyInstalled
 | 
			
		||||
                 , BuildFailed
 | 
			
		||||
                 , DigestError
 | 
			
		||||
                 , DistroNotFound
 | 
			
		||||
                 , DownloadFailed
 | 
			
		||||
                 , GHCupSetError
 | 
			
		||||
                 , NoCompatibleArch
 | 
			
		||||
                 , NoCompatiblePlatform
 | 
			
		||||
                 , NoDownload
 | 
			
		||||
                 , PatchFailed
 | 
			
		||||
                 , UnknownArchive
 | 
			
		||||
@ -464,6 +471,8 @@ compileGHC dls tver bstrap jobs mbuildConfig patchdir = do
 | 
			
		||||
  -- unpack
 | 
			
		||||
  tmpUnpack <- lift mkGhcupTmpDir
 | 
			
		||||
  liftE $ unpackToDir tmpUnpack dl
 | 
			
		||||
  (PlatformRequest {..}) <- liftE $ platformRequest
 | 
			
		||||
  void $ liftIO $ darwinNotarization _rPlatform tmpUnpack
 | 
			
		||||
 | 
			
		||||
  bghc <- case bstrap of
 | 
			
		||||
    Right g    -> pure $ Right g
 | 
			
		||||
@ -579,7 +588,10 @@ compileCabal :: ( MonadReader Settings m
 | 
			
		||||
             -> Excepts
 | 
			
		||||
                  '[ BuildFailed
 | 
			
		||||
                   , DigestError
 | 
			
		||||
                   , DistroNotFound
 | 
			
		||||
                   , DownloadFailed
 | 
			
		||||
                   , NoCompatibleArch
 | 
			
		||||
                   , NoCompatiblePlatform
 | 
			
		||||
                   , NoDownload
 | 
			
		||||
                   , PatchFailed
 | 
			
		||||
                   , UnknownArchive
 | 
			
		||||
@ -596,6 +608,8 @@ compileCabal dls tver bghc jobs patchdir = do
 | 
			
		||||
  -- unpack
 | 
			
		||||
  tmpUnpack <- lift mkGhcupTmpDir
 | 
			
		||||
  liftE $ unpackToDir tmpUnpack dl
 | 
			
		||||
  (PlatformRequest {..}) <- liftE $ platformRequest
 | 
			
		||||
  void $ liftIO $ darwinNotarization _rPlatform tmpUnpack
 | 
			
		||||
 | 
			
		||||
  let workdir = maybe id (flip (</>)) (view dlSubdir dlInfo) $ tmpUnpack
 | 
			
		||||
 | 
			
		||||
@ -674,7 +688,8 @@ upgradeGHCup :: ( MonadMask m
 | 
			
		||||
upgradeGHCup dls mtarget = do
 | 
			
		||||
  lift $ $(logInfo) [i|Upgrading GHCup...|]
 | 
			
		||||
  let latestVer = fromJust $ getLatest dls GHCup
 | 
			
		||||
  dli <- liftE $ getDownloadInfo dls GHCup latestVer Nothing
 | 
			
		||||
  pfreq <- liftE platformRequest
 | 
			
		||||
  dli <- lE $ getDownloadInfo GHCup latestVer pfreq dls
 | 
			
		||||
  tmp <- lift withGHCupTmpDir
 | 
			
		||||
  let fn = [rel|ghcup|]
 | 
			
		||||
  p <- liftE $ download dli tmp (Just fn)
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,6 @@ import           GHCup.Download.IOStreams
 | 
			
		||||
import           GHCup.Download.Utils
 | 
			
		||||
#endif
 | 
			
		||||
import           GHCup.Errors
 | 
			
		||||
import           GHCup.Platform
 | 
			
		||||
import           GHCup.Types
 | 
			
		||||
import           GHCup.Types.JSON               ( )
 | 
			
		||||
import           GHCup.Types.Optics
 | 
			
		||||
@ -204,43 +203,13 @@ getDownloads urlSource = do
 | 
			
		||||
    setModificationTimeHiRes path mod_time
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
getDownloadInfo :: (MonadLogger m, MonadCatch m, MonadIO m)
 | 
			
		||||
                => GHCupDownloads
 | 
			
		||||
                -> Tool
 | 
			
		||||
getDownloadInfo :: Tool
 | 
			
		||||
                -> Version
 | 
			
		||||
                -> Maybe PlatformRequest
 | 
			
		||||
                -> Excepts
 | 
			
		||||
                     '[ DistroNotFound
 | 
			
		||||
                      , NoCompatiblePlatform
 | 
			
		||||
                      , NoCompatibleArch
 | 
			
		||||
                      , NoDownload
 | 
			
		||||
                      ]
 | 
			
		||||
                     m
 | 
			
		||||
                     DownloadInfo
 | 
			
		||||
getDownloadInfo bDls t v mpfReq = do
 | 
			
		||||
  (PlatformRequest arch' plat ver) <- case mpfReq of
 | 
			
		||||
    Just x  -> pure x
 | 
			
		||||
    Nothing -> do
 | 
			
		||||
      (PlatformResult rp rv) <- liftE getPlatform
 | 
			
		||||
      ar                     <- lE getArchitecture
 | 
			
		||||
      pure $ PlatformRequest ar rp rv
 | 
			
		||||
 | 
			
		||||
  lE $ getDownloadInfo' t v arch' plat ver bDls
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
getDownloadInfo' :: Tool
 | 
			
		||||
                 -> Version
 | 
			
		||||
                -- ^ tool version
 | 
			
		||||
                 -> Architecture
 | 
			
		||||
                -- ^ user arch
 | 
			
		||||
                 -> Platform
 | 
			
		||||
                -- ^ user platform
 | 
			
		||||
                 -> Maybe Versioning
 | 
			
		||||
                -- ^ optional version of the platform
 | 
			
		||||
                 -> GHCupDownloads
 | 
			
		||||
                 -> Either NoDownload DownloadInfo
 | 
			
		||||
getDownloadInfo' t v a p mv dls = maybe
 | 
			
		||||
                -> PlatformRequest
 | 
			
		||||
                -> GHCupDownloads
 | 
			
		||||
                -> Either NoDownload DownloadInfo
 | 
			
		||||
getDownloadInfo t v (PlatformRequest a p mv) dls = maybe
 | 
			
		||||
  (Left NoDownload)
 | 
			
		||||
  Right
 | 
			
		||||
  (with_distro <|> without_distro_ver <|> without_distro)
 | 
			
		||||
 | 
			
		||||
@ -46,6 +46,21 @@ import qualified Data.Text.Encoding            as E
 | 
			
		||||
    --------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- | Get the full platform request, consisting of architecture, distro, ...
 | 
			
		||||
platformRequest :: (MonadLogger m, MonadCatch m, MonadIO m)
 | 
			
		||||
                => Excepts
 | 
			
		||||
                     '[ NoCompatiblePlatform
 | 
			
		||||
                      , NoCompatibleArch
 | 
			
		||||
                      , DistroNotFound
 | 
			
		||||
                      ]
 | 
			
		||||
                     m
 | 
			
		||||
                     PlatformRequest
 | 
			
		||||
platformRequest = do
 | 
			
		||||
  (PlatformResult rp rv) <- liftE getPlatform
 | 
			
		||||
  ar                     <- lE getArchitecture
 | 
			
		||||
  pure $ PlatformRequest ar rp rv
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
getArchitecture :: Either NoCompatibleArch Architecture
 | 
			
		||||
getArchitecture = case arch of
 | 
			
		||||
  "x86_64" -> Right A_64
 | 
			
		||||
 | 
			
		||||
@ -358,3 +358,13 @@ applyPatches pdir ddir = do
 | 
			
		||||
        Nothing
 | 
			
		||||
      )
 | 
			
		||||
      !? PatchFailed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
darwinNotarization :: Platform -> Path Abs -> IO (Either ProcessError ())
 | 
			
		||||
darwinNotarization Darwin path = exec
 | 
			
		||||
  "xattr"
 | 
			
		||||
  True
 | 
			
		||||
  ["-r", "-d", "com.apple.quarantine", toFilePath path]
 | 
			
		||||
  Nothing
 | 
			
		||||
  Nothing
 | 
			
		||||
darwinNotarization _ _ = pure $ Right ()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user