From 59e66adb3500b70b40180b9010004e56a9a472ac Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 26 Jul 2018 00:51:13 +0200 Subject: [PATCH] Fixes for buildWeb --- Setup.hs | 11 +++++++++++ WebSetup.hs | 18 ++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Setup.hs b/Setup.hs index 77e11fa90..0cbb64480 100644 --- a/Setup.hs +++ b/Setup.hs @@ -2,6 +2,8 @@ import Distribution.Simple(defaultMainWithHooks,UserHooks(..),simpleUserHooks) import Distribution.Simple.LocalBuildInfo(LocalBuildInfo(..),absoluteInstallDirs,datadir) import Distribution.Simple.Setup(BuildFlags(..),Flag(..),InstallFlags(..),CopyDest(..),CopyFlags(..),SDistFlags(..)) import Distribution.PackageDescription(PackageDescription(..),emptyHookedBuildInfo) +import Distribution.Simple.BuildPaths(exeExtension) +import System.FilePath((),(<.>)) import WebSetup @@ -33,6 +35,8 @@ main = defaultMainWithHooks simpleUserHooks gfPostBuild args flags pkg lbi = do noRGLmsg + let gf = default_gf lbi + buildWeb gf flags (pkg,lbi) gfPostInst args flags pkg lbi = do noRGLmsg @@ -65,3 +69,10 @@ saveCopyPath args flags bi = do -- can determine where to put the compiled RGL files dataDirFile :: String dataDirFile = "DATA_DIR" + +-- | Get path to locally-built gf +default_gf :: LocalBuildInfo -> FilePath +default_gf lbi = buildDir lbi exeName' exeNameReal + where + exeName' = "gf" + exeNameReal = exeName' <.> exeExtension diff --git a/WebSetup.hs b/WebSetup.hs index 02123f5bd..fc70bb13e 100644 --- a/WebSetup.hs +++ b/WebSetup.hs @@ -1,6 +1,6 @@ module WebSetup(buildWeb,installWeb,copyWeb,numJobs,execute) where -import System.Directory(createDirectoryIfMissing,copyFile,doesDirectoryExist) +import System.Directory(createDirectoryIfMissing,copyFile,doesDirectoryExist,doesFileExist) import System.FilePath((),dropExtension) import System.Process(rawSystem) import System.Exit(ExitCode(..)) @@ -45,21 +45,20 @@ example_grammars = contrib_dir :: FilePath contrib_dir = "..""gf-contrib" -buildWeb :: String -> (BuildFlags, PackageDescription, LocalBuildInfo) -> IO () -buildWeb gf (flags,pkg,lbi) = do +buildWeb :: String -> BuildFlags -> (PackageDescription, LocalBuildInfo) -> IO () +buildWeb gf flags (pkg,lbi) = do contrib_exists <- doesDirectoryExist contrib_dir if contrib_exists then mapM_ build_pgf example_grammars else putStr $ unlines - [ "---" - , "Example grammars are no longer included in the main GF repository, but have moved to gf-contrib." + [ "Example grammars are no longer included in the main GF repository, but have moved to gf-contrib." , "If you want these example grammars to be built, clone this repository in the same top-level directory as GF:" , "https://github.com/GrammaticalFramework/gf-contrib.git" - , "---" ] where gfo_dir = buildDir lbi "examples" + build_pgf :: (String, String, [String]) -> IO Bool build_pgf (pgf,subdir,src) = do createDirectoryIfMissing True tmp_dir putStrLn $ "Building "++pgf @@ -101,10 +100,13 @@ setupWeb dest (pkg,lbi) = do www_dir = datadir (absoluteInstallDirs pkg lbi dest) "www" gfo_dir = buildDir lbi "examples" + copy_pgf :: (String, String, [String]) -> IO () copy_pgf (pgf,subdir,_) = - do let dst = grammars_dirpgf + do let src = gfo_dir pgf + let dst = grammars_dir pgf putStrLn $ "Installing "++dst - copyFile (gfo_dirpgf) dst + ex <- doesFileExist src + if ex then copyFile src dst else return () gf_logo = "gf0.png"