forked from GitHub/gf-core
4dba12c0ce
Also based on #165 --------- Co-authored-by: o1lo01ol1o <tim.pierson@gmail.com> Co-authored-by: Tim Pierson <o1lo01ol1o@users.noreply.github.com>
193 lines
6.8 KiB
Diff
193 lines
6.8 KiB
Diff
commit 45e5473fcd5707af93646d9a116867a4d4e3e9c9
|
|
Author: Andreas Källberg <anka.213@gmail.com>
|
|
Date: Mon Oct 10 14:57:12 2022 +0200
|
|
|
|
Revert "workaround for the Nix madness"
|
|
|
|
This reverts commit 1294269cd60f3db7b056135104615625baeb528c.
|
|
|
|
There are easier workarounds, like using
|
|
|
|
cabal v1-build
|
|
|
|
etc. instead of just `cabal build`
|
|
|
|
These changes also broke a whole bunch of other stuff
|
|
|
|
diff --git a/README.md b/README.md
|
|
index ba35795a4..79e6ab68f 100644
|
|
--- a/README.md
|
|
+++ b/README.md
|
|
@@ -38,21 +38,6 @@ or:
|
|
```
|
|
stack install
|
|
```
|
|
-Note that if you are unlucky to have Cabal 3.0 or later, then it uses
|
|
-the so-called Nix style commands. Using those for GF development is
|
|
-a pain. Every time when you change something in the source code, Cabal
|
|
-will generate a new folder for GF to look for the GF libraries and
|
|
-the GF cloud. Either reinstall everything with every change in the
|
|
-compiler, or be sane and stop using cabal-install. Instead you can do:
|
|
-```
|
|
-runghc Setup.hs configure
|
|
-runghc Setup.hs build
|
|
-sudo runghc Setup.hs install
|
|
-```
|
|
-The script will install the GF dependencies globally. The only solution
|
|
-to the Nix madness that I found is radical:
|
|
-
|
|
- "No person, no problem" (Нет человека – нет проблемы).
|
|
|
|
For more information, including links to precompiled binaries, see the [download page](https://www.grammaticalframework.org/download/index.html).
|
|
|
|
diff --git a/Setup.hs b/Setup.hs
|
|
index 58dc3e0c6..f8309cc00 100644
|
|
--- a/Setup.hs
|
|
+++ b/Setup.hs
|
|
@@ -4,68 +4,42 @@ import Distribution.Simple.LocalBuildInfo(LocalBuildInfo(..),absoluteInstallDirs
|
|
import Distribution.Simple.Setup(BuildFlags(..),Flag(..),InstallFlags(..),CopyDest(..),CopyFlags(..),SDistFlags(..))
|
|
import Distribution.PackageDescription(PackageDescription(..),emptyHookedBuildInfo)
|
|
import Distribution.Simple.BuildPaths(exeExtension)
|
|
-import System.Directory
|
|
import System.FilePath((</>),(<.>))
|
|
-import System.Process
|
|
-import Control.Monad(forM_,unless)
|
|
-import Control.Exception(bracket_)
|
|
-import Data.Char(isSpace)
|
|
|
|
import WebSetup
|
|
|
|
+-- | Notice about RGL not built anymore
|
|
+noRGLmsg :: IO ()
|
|
+noRGLmsg = putStrLn "Notice: the RGL is not built as part of GF anymore. See https://github.com/GrammaticalFramework/gf-rgl"
|
|
+
|
|
main :: IO ()
|
|
main = defaultMainWithHooks simpleUserHooks
|
|
- { preConf = gfPreConf
|
|
- , preBuild = gfPreBuild
|
|
+ { preBuild = gfPreBuild
|
|
, postBuild = gfPostBuild
|
|
, preInst = gfPreInst
|
|
, postInst = gfPostInst
|
|
, postCopy = gfPostCopy
|
|
}
|
|
where
|
|
- gfPreConf args flags = do
|
|
- pkgs <- fmap (map (dropWhile isSpace) . tail . lines)
|
|
- (readProcess "ghc-pkg" ["list"] "")
|
|
- forM_ dependencies $ \pkg -> do
|
|
- let name = takeWhile (/='/') (drop 36 pkg)
|
|
- unless (name `elem` pkgs) $ do
|
|
- let fname = name <.> ".tar.gz"
|
|
- callProcess "wget" [pkg,"-O",fname]
|
|
- callProcess "tar" ["-xzf",fname]
|
|
- removeFile fname
|
|
- bracket_ (setCurrentDirectory name) (setCurrentDirectory ".." >> removeDirectoryRecursive name) $ do
|
|
- exists <- doesFileExist "Setup.hs"
|
|
- unless exists $ do
|
|
- writeFile "Setup.hs" (unlines [
|
|
- "import Distribution.Simple",
|
|
- "main = defaultMain"
|
|
- ])
|
|
- let to_descr = reverse .
|
|
- (++) (reverse ".cabal") .
|
|
- drop 1 .
|
|
- dropWhile (/='-') .
|
|
- reverse
|
|
- callProcess "wget" [to_descr pkg, "-O", to_descr name]
|
|
- callProcess "runghc" ["Setup.hs","configure"]
|
|
- callProcess "runghc" ["Setup.hs","build"]
|
|
- callProcess "sudo" ["runghc","Setup.hs","install"]
|
|
-
|
|
- preConf simpleUserHooks args flags
|
|
-
|
|
- gfPreBuild args = gfPre args . buildDistPref
|
|
- gfPreInst args = gfPre args . installDistPref
|
|
+ gfPreBuild args = gfPre args . buildDistPref
|
|
+ gfPreInst args = gfPre args . installDistPref
|
|
|
|
gfPre args distFlag = do
|
|
return emptyHookedBuildInfo
|
|
|
|
gfPostBuild args flags pkg lbi = do
|
|
+ -- noRGLmsg
|
|
let gf = default_gf lbi
|
|
buildWeb gf flags (pkg,lbi)
|
|
|
|
gfPostInst args flags pkg lbi = do
|
|
+ -- noRGLmsg
|
|
+ saveInstallPath args flags (pkg,lbi)
|
|
installWeb (pkg,lbi)
|
|
|
|
gfPostCopy args flags pkg lbi = do
|
|
+ -- noRGLmsg
|
|
+ saveCopyPath args flags (pkg,lbi)
|
|
copyWeb flags (pkg,lbi)
|
|
|
|
-- `cabal sdist` will not make a proper dist archive, for that see `make sdist`
|
|
@@ -73,16 +47,27 @@ main = defaultMainWithHooks simpleUserHooks
|
|
gfSDist pkg lbi hooks flags = do
|
|
return ()
|
|
|
|
-dependencies = [
|
|
- "https://hackage.haskell.org/package/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz",
|
|
- "https://hackage.haskell.org/package/json-0.10/json-0.10.tar.gz",
|
|
- "https://hackage.haskell.org/package/network-bsd-2.8.1.0/network-bsd-2.8.1.0.tar.gz",
|
|
- "https://hackage.haskell.org/package/httpd-shed-0.4.1.1/httpd-shed-0.4.1.1.tar.gz",
|
|
- "https://hackage.haskell.org/package/exceptions-0.10.5/exceptions-0.10.5.tar.gz",
|
|
- "https://hackage.haskell.org/package/stringsearch-0.3.6.6/stringsearch-0.3.6.6.tar.gz",
|
|
- "https://hackage.haskell.org/package/multipart-0.2.1/multipart-0.2.1.tar.gz",
|
|
- "https://hackage.haskell.org/package/cgi-3001.5.0.0/cgi-3001.5.0.0.tar.gz"
|
|
- ]
|
|
+saveInstallPath :: [String] -> InstallFlags -> (PackageDescription, LocalBuildInfo) -> IO ()
|
|
+saveInstallPath args flags bi = do
|
|
+ let
|
|
+ dest = NoCopyDest
|
|
+ dir = datadir (uncurry absoluteInstallDirs bi dest)
|
|
+ writeFile dataDirFile dir
|
|
+
|
|
+saveCopyPath :: [String] -> CopyFlags -> (PackageDescription, LocalBuildInfo) -> IO ()
|
|
+saveCopyPath args flags bi = do
|
|
+ let
|
|
+ dest = case copyDest flags of
|
|
+ NoFlag -> NoCopyDest
|
|
+ Flag d -> d
|
|
+ dir = datadir (uncurry absoluteInstallDirs bi dest)
|
|
+ writeFile dataDirFile dir
|
|
+
|
|
+-- | Name of file where installation's data directory is recording
|
|
+-- This is a last-resort way in which the seprate RGL build script
|
|
+-- can determine where to put the compiled RGL files
|
|
+dataDirFile :: String
|
|
+dataDirFile = "DATA_DIR"
|
|
|
|
-- | Get path to locally-built gf
|
|
default_gf :: LocalBuildInfo -> FilePath
|
|
diff --git a/gf.cabal b/gf.cabal
|
|
index a055b86be..d00a5b935 100644
|
|
--- a/gf.cabal
|
|
+++ b/gf.cabal
|
|
@@ -2,7 +2,7 @@ name: gf
|
|
version: 3.11.0-git
|
|
|
|
cabal-version: 1.22
|
|
-build-type: Simple
|
|
+build-type: Custom
|
|
license: OtherLicense
|
|
license-file: LICENSE
|
|
category: Natural Language Processing, Compiler
|
|
@@ -44,6 +44,14 @@ data-files:
|
|
www/translator/*.css
|
|
www/translator/*.js
|
|
|
|
+custom-setup
|
|
+ setup-depends:
|
|
+ base >= 4.9.1 && < 4.16,
|
|
+ Cabal >= 1.22.0.0,
|
|
+ directory >= 1.3.0 && < 1.4,
|
|
+ filepath >= 1.4.1 && < 1.5,
|
|
+ process >= 1.0.1.1 && < 1.7
|
|
+
|
|
source-repository head
|
|
type: git
|
|
location: https://github.com/GrammaticalFramework/gf-core.git
|