cabal-macosx 0.2.2 → 0.2.3
raw patch · 4 files changed
+39/−20 lines, 4 filesdep +textdep −MissingHPVP ok
version bump matches the API change (PVP)
Dependencies added: text
Dependencies removed: MissingH
API changes (from Hackage documentation)
Files
- Distribution/MacOSX.hs +27/−15
- Distribution/MacOSX/AppBuildInfo.hs +7/−1
- Distribution/MacOSX/Common.hs +1/−0
- cabal-macosx.cabal +4/−4
Distribution/MacOSX.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE OverloadedStrings #-} {- | Cabal support for creating Mac OSX application bundles. GUI applications on Mac OSX should be run as application /bundles/;@@ -27,7 +28,16 @@ import Prelude hiding ( catch ) import Control.Monad (forM_, when, filterM) import Data.List ( isPrefixOf )-import Data.String.Utils (replace)+import Data.Text ( Text )+import System.Cmd (system)+import System.Exit+import System.FilePath+import System.Info (os)+import System.Directory (copyFile, createDirectoryIfMissing, doesDirectoryExist,+ getHomeDirectory)+import qualified Data.Text as T+import qualified Data.Text.IO as T+ import Distribution.PackageDescription (PackageDescription(..), Executable(..)) import Distribution.Simple@@ -38,12 +48,6 @@ ) import Distribution.Simple.Utils (installDirectoryContents, installExecutableFile) import Distribution.Verbosity (normal)-import System.Cmd (system)-import System.FilePath-import System.Info (os)-import System.Directory (copyFile, createDirectoryIfMissing, doesDirectoryExist,- getHomeDirectory)-import System.Exit import Distribution.MacOSX.AppBuildInfo import Distribution.MacOSX.Common@@ -119,16 +123,24 @@ bundleScriptElsewhere :: LocalBuildInfo -> MacApp -> String bundleScriptElsewhere localb app = unlines [ "#!/bin/bash"- , "COUNTER=0" , "MAX_DEPTH=256"+ , "COUNTER=0" , "ZERO=$0"- , "NZERO=`readlink $ZERO`; STATUS=$?"+ , "STATUS=0" , "" , "# The counter is just a safeguard in case I'd done something silly" , "while [ $STATUS -eq 0 -a $COUNTER -lt $MAX_DEPTH ]; do"- , " let COUNTER=COUNTER+1"- , " ZERO=$NZERO"+ , " COUNTER=$(($COUNTER+1))" , " NZERO=`readlink $ZERO`; STATUS=$?"+ , " if [ $STATUS -eq 0 ]; then"+ , " # go to my parent dir"+ , " pushd $(dirname $ZERO) > /dev/null"+ , " # now follow the symlink if at all"+ , " pushd $(dirname $NZERO) > /dev/null"+ , " ZERO=$PWD/$(basename $NZERO)"+ , " popd > /dev/null"+ , " popd > /dev/null"+ , " fi" , "done" , "if [ $COUNTER -ge $MAX_DEPTH ]; then" , " echo >&2 Urk! exceeded symlink depth of $MAX_DEPTH trying to dereference $0"@@ -199,9 +211,9 @@ Nothing -> case appIcon app of Just icPath -> do -- Need a plist to support icon; use default.- let pl = replace "$program" (appName app) plistTemplate- pl' = replace "$iconPath" (takeFileName icPath) pl- writeFile plDest pl'+ let pl = T.replace "$program" (T.pack (appName app)) plistTemplate+ pl' = T.replace "$iconPath" (T.pack (takeFileName icPath)) pl+ T.writeFile plDest pl' return () Nothing -> return () -- No icon, no plist, nothing to do. where plDest = appPath </> "Contents/Info.plist"@@ -251,7 +263,7 @@ -- | Default plist template, based on that in macosx-app from wx (but -- with version stuff removed).-plistTemplate :: String+plistTemplate :: Text plistTemplate = "\ \<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\ \<!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\">\n\
Distribution/MacOSX/AppBuildInfo.hs view
@@ -1,3 +1,4 @@+-- | Information used to help create an application bundle module Distribution.MacOSX.AppBuildInfo where import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..))@@ -11,11 +12,16 @@ -- macosx-app executable without it necessarily having to -- know a lot of Cabal internals data AppBuildInfo = AppBuildInfo- { abAppPath :: FilePath+ { -- | Location of the application bundle being built+ abAppPath :: FilePath+ -- | Location of the original executable that was built , abAppOrigExe :: FilePath+ -- | , abApp :: MacApp } +-- | @toAppBuildInfo l m@ returns information for an application bundle+-- within the @l@ build directory toAppBuildInfo :: LocalBuildInfo -> MacApp -> AppBuildInfo toAppBuildInfo localb app = AppBuildInfo { abAppPath = buildDir localb </> appName app <.> "app"
Distribution/MacOSX/Common.hs view
@@ -1,3 +1,4 @@+-- | Utility functions module Distribution.MacOSX.Common where import Data.List
cabal-macosx.cabal view
@@ -1,5 +1,5 @@ Name: cabal-macosx-Version: 0.2.2+Version: 0.2.3 Stability: Alpha Synopsis: Cabal support for creating Mac OSX application bundles. Description:@@ -21,7 +21,7 @@ License-file: LICENSE Copyright: Eric Kow & Andy Gimblett Author: Eric Kow <eric.kow@gmail.com> & Andy Gimblett <haskell@gimbo.org.uk>-Maintainer: Andy Gimblett <haskell@gimbo.org.uk>+Maintainer: Eric Kow <eric.kow@gmail.com> Homepage: http://github.com/gimbo/cabal-macosx Build-Type: Simple Cabal-Version: >=1.6@@ -33,7 +33,7 @@ Library Build-Depends: base >= 4 && < 5, Cabal >= 1.6, directory , fgl >= 5.4.2.2 && < 5.5- , filepath, MissingH, parsec, process+ , filepath, parsec, process, text Exposed-modules: Distribution.MacOSX Other-modules: Distribution.MacOSX.Common, Distribution.MacOSX.AppBuildInfo,@@ -45,4 +45,4 @@ Main-is: macosx-app.hs Build-Depends: base >= 4 && < 5, Cabal >= 1.6, directory , fgl >= 5.4.2.2 && < 5.5- , filepath, MissingH, parsec, process+ , filepath, parsec, process, text