CPL 0.0.9 → 0.1.0
raw patch · 14 files changed
+51/−455 lines, 14 filesdep ~mtl
Dependency ranges changed: mtl
Files
- .travis.yml +0/−98
- CHANGELOG.markdown +17/−4
- CPL.cabal +9/−16
- README.markdown +22/−17
- appveyor.yml +0/−53
- build_bdist_linux.sh +0/−30
- misc/build_zip.hs +0/−53
- src/Main.hs +1/−0
- src/Simp.hs +1/−0
- src/Typing.hs +1/−0
- windows/COPYING.rtf binary
- windows/CPL.wxs +0/−92
- windows/build_msi.hs +0/−39
- windows/build_zip.hs +0/−53
− .travis.yml
@@ -1,98 +0,0 @@-language: c-sudo: false--cache:- directories:- - $HOME/.cabsnap- - $HOME/.cabal/packages--before_cache:- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar--matrix:- include:- - env: CABALVER=1.18 GHCVER=7.8.4 COVERAGE=1- compiler: ": #GHC 7.8.4"- addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.22 GHCVER=7.10.3- compiler: ": #GHC 7.10.3"- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.24 GHCVER=8.0.2- compiler: ": #GHC 8.0.2"- addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=2.0 GHCVER=8.2.2- compiler: ": #GHC 8.2.2"- addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}--before_install:- - unset CC- - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/alex/3.1.4/bin:/opt/happy/1.19.5/bin:$PATH--install:- - cabal --version- - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"- - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];- then- zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >- $HOME/.cabal/packages/hackage.haskell.org/00-index.tar;- fi- - travis_retry cabal update -v- - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config- - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt- - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt--# check whether current requested install-plan matches cached package-db snapshot- - if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;- then- echo "cabal build-cache HIT";- rm -rfv .ghc;- cp -a $HOME/.cabsnap/ghc $HOME/.ghc;- cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;- else- echo "cabal build-cache MISS";- rm -rf $HOME/.cabsnap;- mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;- cabal install --only-dependencies --enable-tests --enable-benchmarks;- fi--# snapshot package-db on cache miss- - if [ ! -d $HOME/.cabsnap ];- then- echo "snapshotting package-db to build-cache";- mkdir $HOME/.cabsnap;- cp -a $HOME/.ghc $HOME/.cabsnap/ghc;- cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;- fi--# Here starts the actual work to be performed for the package under test;-# any command which exits with a non-zero exit code causes the build to fail.-script:- - if [ -f configure.ac ]; then autoreconf -i; fi- - cabal configure --enable-tests --enable-benchmarks -v2 $([ "$COVERAGE" = "1" ] && echo "--enable-library-coverage") # -v2 provides useful information for debugging- - cabal build # this builds all libraries and executables (including tests/benchmarks)- - cabal test- - cabal check- - cabal sdist # tests that a source-distribution can be generated--# Check that the resulting source distribution can be built & installed.-# If there are no other `.tar.gz` files in `dist`, this can be even simpler:-# `cabal install --force-reinstalls dist/*-*.tar.gz`- - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&- (cd dist && cabal install --force-reinstalls "$SRC_TGZ")--before_deploy:- - cp dist/build/cpl/cpl ./- - cabal install turtle- - runghc misc/build_zip.hs--deploy:- provider: releases- api_key:- secure: "hBzyr9MKoa7xYcxjiiEEa+EgOmD/Fi314ojXB0zz6urcxTXzljLQt705r6Ev+2xlRpXlcpxPbpIAz/Quyzrt7grvuHv1K43ZGEh1QrzUQ7X+ke6gjfgwUAOe37BHUtYR5Dd+THJ2HfAJ5nndFbzfnK5tkkxFk+BuDlUVQlIGw00="- file_glob: true- file: '*.zip'- skip_cleanup: true- on:- tags: true- condition: "$GHCVER = 8.2.2"
CHANGELOG.markdown view
@@ -1,21 +1,34 @@-Changes since the 0.0.7 release+0.1.0 (2025-10-29) ------------------------------- +* Update Cabal-Version requirement from >=1.10 to 2.2+* Require `mtl` >=2.2.1 for `Control.Monad.Except`+* Fix compilation error on recent `mtl` package++0.0.9 (2018-02-16)+-------------------------------++* Use `Control.Monad.Except` instead of deprecated Control.Monad.Error++0.0.8 (2016-01-14)+-------------------------------+ * "→" can be used instead of "->" * GHC-7.10 support+* Add windows installer -Changes since the 0.0.6 release+0.0.7 (2014-08-13) ------------------------------- * Clean up internals * Enable `-fReadline` and `-fHaskeline` by default -Changes since the 0.0.5 release+0.0.6 (2009-10-26) ------------------------------- Readline/Haskeline support. -Changes since the 0.0.3 release+0.0.4 ------------------------------- Function defintions are added.
CPL.cabal view
@@ -1,11 +1,11 @@+cabal-version: 2.2 Name: CPL-Version: 0.0.9-License: BSD3+Version: 0.1.0+License: BSD-3-Clause License-File: COPYING Author: Masahiro Sakai (masahiro.sakai@gmail.com) Maintainer: masahiro.sakai@gmail.com Category: Compilers/Interpreters-Cabal-Version: >=1.10 Homepage: https://github.com/msakai/cpl Synopsis: An interpreter of Hagino's Categorical Programming Language (CPL). Description:@@ -19,11 +19,10 @@ morphisms. Programs consist of these morphisms, and execution of programs is the reduction of elements (i.e. special morphisms) to their canonical form.-Extra-Source-Files:+Extra-Doc-Files: README.markdown,- CHANGELOG.markdown,- appveyor.yml,- .travis.yml,+ CHANGELOG.markdown+Extra-Source-Files: samples/ack.cpl, samples/automata.cdt, samples/ccc.cdt,@@ -34,14 +33,7 @@ samples/rec.cdt, samples/benchmark.cpl, samples/ack_3_4.cpl,- samples/function.cpl,- src/CDT.hs-boot,- windows/COPYING.rtf,- windows/CPL.wxs,- windows/build_msi.hs,- windows/build_zip.hs,- misc/build_zip.hs,- build_bdist_linux.sh+ samples/function.cpl Build-Type: Simple source-repository head@@ -65,7 +57,8 @@ Main-is: Main.hs HS-Source-Dirs: src Other-Modules: AExp CDT CDTParser CPLSystem Exp ExpParser FE Funct ParserUtils Simp Statement Subst Type Typing Variance Paths_CPL- Build-Depends: base >=4 && <5, mtl >=2.0.0.0, containers, array, parsec+ Autogen-Modules: Paths_CPL+ Build-Depends: base >=4 && <5, mtl >=2.2.1, containers, array, parsec Default-Language: Haskell2010 Other-Extensions: TypeSynonymInstances, FlexibleInstances, CPP, GeneralizedNewtypeDeriving if flag(Readline)
README.markdown view
@@ -1,9 +1,12 @@-An implementation of "A Categorical Programing Language"-========================================================+An implementation of "A Categorical Programming Language"+========================================================= -[](http://travis-ci.org/msakai/cpl) [](https://ci.appveyor.com/project/msakai/cpl/branch/master) [](https://hackage.haskell.org/package/CPL)+[](https://github.com/msakai/cpl/actions/workflows/build.yaml)+[](https://hackage.haskell.org/package/CPL)+[](https://packdeps.haskellers.com/feed?needle=CPL)+[](https://opensource.org/licenses/BSD-3-Clause) -This package is an implementation of "A Categorical Programing Language"+This package is an implementation of "A Categorical Programming Language" (CPL for short)[1][2] written in Haskell. CPL is a functional programming language based on category@@ -20,15 +23,17 @@ Install ------- -De-Compress archive and enter its top directory.+De-Compress the archive and enter its top directory. Then type: - $ cabal configure- $ cabal build- $ cabal install+```+$ cabal configure+$ cabal build+$ cabal install+``` -If you want to compile with readline or haskeline, add -fReadline or--fHaskeline respectively to configure command.+If you want to compile with readline or haskeline, add `-fReadline` or+`-fHaskeline` respectively to the configure command. Usage -----@@ -38,8 +43,8 @@ License ------- -This program is licenced under the BSD-style license.-(See the file 'COPYING'.)+This program is licensed under the BSD-style license.+(See the file [COPYING](COPYING).) Copyright (C) 2004-2014 Masahiro Sakai <masahiro.sakai@gmail.com> @@ -51,11 +56,11 @@ Bibliography ------------ -(1) Tatsuya Hagino, “A Categorical Programming Languge”.- Ph.D. Thesis, University of Edinburgh, 1987+1. Tatsuya Hagino, “A Categorical Programming Language”.+ Ph.D. Thesis, University of Edinburgh, 1987. available at <http://web.sfc.keio.ac.jp/~hagino/index.html.en> -(2) Tatsuya Hagino, “Categorical Functional Programming Language”.+2. Tatsuya Hagino, “Categorical Functional Programming Language”. Computer Software, Vol 7, No.1.- Advances in Software Science and Technology 4, 1992- ISBN 0-12-037104-9+ Advances in Software Science and Technology 4, 1992.+ ISBN 0-12-037104-9.
− appveyor.yml
@@ -1,53 +0,0 @@-cache:-- "c:\\sr" # stack root, short paths == less problems--# to disable automatic builds-#build: off--platform:-- x86-- x64--environment:- global:- STACK_ROOT: "c:\\sr"--install:-- if %PLATFORM%==x86 (curl -ostack.zip -L --insecure http://www.stackage.org/stack/windows-i386) else (curl -ostack.zip -L --insecure http://www.stackage.org/stack/windows-x86_64)-- 7z x stack.zip stack.exe-- stack --resolver=lts-9.21 setup > nul-- ps: |- choco --no-progress install wixtoolset -version 3.11.1 -y- $env:Path += ";${env:ProgramFiles}\WiX Toolset v3.11\bin"- $env:Path += ";${env:ProgramFiles(x86)}\WiX Toolset v3.11\bin"--build_script:-# The ugly echo "" hack is to avoid complaints about 0 being an invalid file-# descriptor-- echo "" | stack --resolver=lts-9.21 --no-terminal test --bench --no-run-benchmarks --flag CPL:Haskeline --flag CPL:-Readline--after_test:-- ps: cp "$(./stack --resolver=lts-9.21 path --local-install-root)/bin/cpl.exe" cpl.exe-- cmd: |- cd windows- echo Creating msi...- ..\stack --resolver=lts-9.21 runhaskell --package turtle build_msi.hs- echo Creating zip...- ..\stack --resolver=lts-9.21 runhaskell --package turtle build_zip.hs- cd ..--artifacts:-- path: windows\*.msi- name: Windows Installer-- path: windows\*.zip- name: Portable Binary Package--deploy:-- provider: GitHub- auth_token:- secure: F8cldz47mQ0lW3O9uCEneU5LRklWcKw8JbPuh5BDYA2TfyeqC//GO8vl8/wmBy3Z- artifact: Windows Installer, Portable Binary Package- force_update: true- release: $(appveyor_repo_tag_name)- on:- appveyor_repo_tag: true
− build_bdist_linux.sh
@@ -1,30 +0,0 @@-#!/bin/bash-export CABALVER=1.22-export GHCVER=7.10.2--sudo add-apt-repository -y ppa:hvr/ghc-sudo apt-get update--sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER-export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:~/.cabal/bin:$PATH-sudo apt-get install happy-1.19.4 alex-3.1.3-export PATH=/opt/alex/3.1.3/bin:/opt/happy/1.19.4/bin:$PATH--cabal sandbox init-cabal update-cabal install --only-dependencies -f-Haskeline -f-Readline-cabal configure -fLinuxStatic -f-Haskeline -f-Readline-cabal build--VER=`ghc -e ":m + Control.Monad Distribution.Package Distribution.PackageDescription Distribution.PackageDescription.Parse Distribution.Verbosity Data.Version" -e 'putStrLn =<< liftM (showVersion . pkgVersion . package . packageDescription) (readPackageDescription silent "CPL.cabal")'`-OS=`ghc -e ":m +System.Info" -e "putStrLn os"`-ARCH=`ghc -e ":m +System.Info" -e "putStrLn arch"`--PKG=CPL-${VER}-${OS}-${ARCH}--rm -r $PKG-mkdir -p $PKG/bin-cp dist/build/cpl/cpl $PKG/bin-cp CHANGELOG.markdown COPYING README.markdown $PKG/-cp -a samples $PKG-tar Jcf $PKG.tar.xz $PKG --owner=sakai --group=sakai
− misc/build_zip.hs
@@ -1,53 +0,0 @@-{-# OPTIONS_GHC -Wall #-}-{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}-import Control.Exception-import Control.Monad-import Data.String-import Distribution.Package-import Distribution.PackageDescription-import Distribution.PackageDescription.Parse-import Distribution.Verbosity-import Distribution.Version-import qualified System.Info as SysInfo-import System.Process-import Turtle hiding (FilePath)--getGitHash :: IO (Maybe String)-getGitHash =- liftM (Just . takeWhile (/='\n')) (readProcess "git" ["rev-parse", "--short", "HEAD"] "")- `catch` \(_::SomeException) -> return Nothing--getVersion :: FilePath -> IO Version-getVersion cabalFile = do- pkg <- readPackageDescription silent cabalFile- return $ pkgVersion $ package $ packageDescription $ pkg--main :: IO ()-main = do- gitHashMaybe <- getGitHash- version <- getVersion "CPL.cabal"- let suffix_githash =- case gitHashMaybe of- Nothing -> ""- Just gitHash -> "_" ++ gitHash- dir :: IsString a => a- dir = fromString $ "CPL-" ++ showVersion version ++ suffix_githash ++ "-" ++ SysInfo.os ++ "-" ++ SysInfo.arch-- let binDir = dir </> "bin"- samplesDir = dir </> "samples"- zipFile :: IsString a => a- zipFile = fromString (dir ++ ".zip")- testfile zipFile >>= \b -> when b (rm zipFile)- testfile dir >>= \b -> when b (rmtree dir)- mktree dir- mktree binDir- mktree samplesDir- cp ("cpl") (binDir </> "cpl")- sh $ do- fpath <- ls "samples"- cp fpath (samplesDir </> filename fpath)- cp "COPYING" (dir </> "COPYING")- cp "README.markdown" (dir </> "README.markdown")- cp "CHANGELOG.markdown" (dir </> "CHANGELOG.markdown")- procs "zip" ["-r", zipFile, dir] empty- return ()
src/Main.hs view
@@ -30,6 +30,7 @@ import System.Environment import System.Exit import System.IO+import Control.Monad import Control.Monad.Except import Control.Monad.State.Strict -- haskeline's MonadException requries strict version import System.Console.GetOpt
src/Simp.hs view
@@ -26,6 +26,7 @@ import qualified FE import Exp (Id) import Type+import Control.Monad import Control.Monad.RWS import Data.Array import qualified Data.Map as Map
src/Typing.hs view
@@ -25,6 +25,7 @@ import Data.List (nub) import Control.Applicative+import Control.Monad import Control.Monad.Except import Control.Monad.RWS import qualified Data.Map as Map
− windows/COPYING.rtf
binary file changed (1818 → absent bytes)
− windows/CPL.wxs
@@ -1,92 +0,0 @@-<?xml version="1.0" encoding="utf-8"?> - -<?if $(sys.BUILDARCH)=x64 ?> - <?define Win64 = "yes" ?> - <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> -<?else ?> - <?define Win64 = "no" ?> - <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> -<?endif ?> - -<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> - <Product Id="AD35BCFF-05F9-4467-B922-B9F76EAB2B1F" Name="Categorical Programming Language" Language="1033" Version="0.0.8.0" Manufacturer="Masahiro Sakai" UpgradeCode="8DBD2D7D-6114-4C47-A307-DD99483568C5"> - <Package Description="This package is an implementation of "A Categorical Programing Language" (CPL for short) written in Haskell" Comments="Categorical Programming Language" InstallerVersion="200" Compressed="yes" /> - <Media Id="1" Cabinet="simple.cab" EmbedCab="yes" /> - <Directory Id="TARGETDIR" Name="SourceDir"> - <Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles"> - <Directory Id="INSTALLDIR" Name="CPL"> - <Directory Id="BINDIR" Name="bin"> - <Component Id="MainExecutable" Guid="6E979ACB-D17F-4C9D-8BA0-041FD0D5E987"> - <File Id="cplEXE" Name="cpl.exe" Source="..\cpl.exe" /> - </Component> - </Directory> - <Directory Id="SAMPLES" Name="samples"> - <Component Id="ACK.CPL" DiskId="1" Guid="28C7FD0E-9061-4392-9523-CBF65012F4CD"> - <File Id="ACK.CPL" Name="ack.cpl" Source="..\samples\ack.cpl" /> - </Component> - <Component Id="ACK_3_4.CPL" DiskId="1" Guid="DC20AC75-DA73-49EA-8960-48B25DA166DB"> - <File Id="ACK_3_4.CPL" Name="ack_3_4.cpl" Source="..\samples\ack_3_4.cpl" /> - </Component> - <Component Id="AUTOMATA.CDT" DiskId="1" Guid="FFD53683-7D82-4396-8649-0458BA2D695E"> - <File Id="AUTOMATA.CDT" Name="automata.cdt" Source="..\samples\automata.cdt" /> - </Component> - <Component Id="BENCHMARK.CPL" DiskId="1" Guid="CE930ED5-1D88-4DA9-9BCD-D58C78A9E727"> - <File Id="BENCHMARK.CPL" Name="benchmark.cpl" Source="..\samples\benchmark.cpl" /> - </Component> - <Component Id="CCC.CDT" DiskId="1" Guid="20974E7A-8454-406F-83B9-83ED7E582B8B"> - <File Id="CCC.CDT" Name="ccc.cdt" Source="..\samples\ccc.cdt" /> - </Component> - <Component Id="EXAMPLES.CPL" DiskId="1" Guid="A4AF9E9F-E4E5-41A2-8BD4-2A6D271E7334"> - <File Id="EXAMPLES.CPL" Name="examples.cpl" Source="..\samples\examples.cpl" /> - </Component> - <Component Id="EXAMPLES.TXT" DiskId="1" Guid="7D36629F-D94D-4080-BFC3-1EA5FBD05B33"> - <File Id="EXAMPLES.TXT" Name="examples.txt" Source="..\samples\examples.txt" /> - </Component> - <Component Id="FUNCTION.CPL" DiskId="1" Guid="2C24BD6E-F9AB-4523-B778-07258DDA11F5"> - <File Id="FUNCTION.CPL" Name="function.cpl" Source="..\samples\function.cpl" /> - </Component> - <Component Id="MISC.CDT" DiskId="1" Guid="C48F939A-D014-43EF-8631-0C8541A8A7FF"> - <File Id="MISC.CDT" Name="misc.cdt" Source="..\samples\misc.cdt" /> - </Component> - <Component Id="OBSCURE.CDT" DiskId="1" Guid="FCE812CA-5688-4ABA-BB34-93895E098424"> - <File Id="OBSCURE.CDT" Name="obscure.cdt" Source="..\samples\obscure.cdt" /> - </Component> - <Component Id="REC.CDT" DiskId="1" Guid="0C90FF11-FA31-44D4-8DD5-7D2B96D10B47"> - <File Id="REC.CDT" Name="rec.cdt" Source="..\samples\rec.cdt" /> - </Component> - </Directory> - <Component Id="ReadmeFile" Guid="EF38BFDC-5DF3-4F57-8307-75F91183FECF"> - <File Id="READMEMD" Name="README.markdown" Source="..\README.markdown" /> - </Component> - <Component Id="LicenseFile" Guid="0019EBA5-97D6-44F3-A451-84D8D9D4F89E"> - <File Id="COPYING" Name="COPYING" Source="..\COPYING" /> - </Component> - <Component Id="ChangeLogFile" Guid="778D69A3-F428-44DD-B9CD-55F976D98F33"> - <File Id="CHANGELOGMD" Name="CHANGELOG.markdown" Source="..\CHANGELOG.markdown" /> - </Component> - </Directory> - </Directory> - </Directory> - <Feature Id="DefaultFeature" Title="Main Feature" Level="1"> - <ComponentRef Id="MainExecutable" /> - <ComponentRef Id="ACK.CPL" /> - <ComponentRef Id="ACK_3_4.CPL" /> - <ComponentRef Id="AUTOMATA.CDT" /> - <ComponentRef Id="BENCHMARK.CPL" /> - <ComponentRef Id="CCC.CDT" /> - <ComponentRef Id="EXAMPLES.CPL" /> - <ComponentRef Id="EXAMPLES.TXT" /> - <ComponentRef Id="FUNCTION.CPL" /> - <ComponentRef Id="MISC.CDT" /> - <ComponentRef Id="OBSCURE.CDT" /> - <ComponentRef Id="REC.CDT" /> - <ComponentRef Id="ReadmeFile" /> - <ComponentRef Id="LicenseFile" /> - <ComponentRef Id="ChangeLogFile" /> - </Feature> - <UI /> - <UIRef Id="WixUI_InstallDir" /> - <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> - <WixVariable Id="WixUILicenseRtf" Value="COPYING.rtf" /> - </Product> -</Wix>
− windows/build_msi.hs
@@ -1,39 +0,0 @@-{-# OPTIONS_GHC -Wall #-}-{-# LANGUAGE ScopedTypeVariables #-}-import Control.Exception-import Control.Monad-import Data.Version-import Distribution.Package-import Distribution.PackageDescription-import Distribution.PackageDescription.Parse-import Distribution.Verbosity-import qualified System.Info as SysInfo-import System.Process--getGitHash :: IO (Maybe String)-getGitHash =- liftM (Just . takeWhile (/='\n')) (readProcess "git" ["rev-parse", "--short", "HEAD"] "")- `catch` \(_::SomeException) -> return Nothing--getVersion :: FilePath -> IO Version-getVersion cabalFile = do- pkg <- readPackageDescription silent cabalFile- return $ pkgVersion $ package $ packageDescription $ pkg--main :: IO ()-main = do- gitHashMaybe <- getGitHash- version <- getVersion "../CPL.cabal"- let suffix_githash =- case gitHashMaybe of- Nothing -> ""- Just gitHash -> "_" ++ gitHash- msiFileName = "CPL-" ++ showVersion version ++ suffix_githash ++ "-" ++ SysInfo.os ++ "-" ++ SysInfo.arch ++ ".msi"- arch =- case SysInfo.arch of- "x86_64" -> "x64"- "i386" -> "x86"- s -> s- callProcess "candle" $ ["-arch", arch, "CPL.wxs"]- callProcess "light" ["-ext", "WixUIExtension", "-out", msiFileName, "CPL.wixobj"]- return ()
− windows/build_zip.hs
@@ -1,53 +0,0 @@-{-# OPTIONS_GHC -Wall #-}-{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}-import Control.Exception-import Control.Monad-import Data.String-import Data.Version-import Distribution.Package-import Distribution.PackageDescription-import Distribution.PackageDescription.Parse-import Distribution.Verbosity-import qualified System.Info as SysInfo-import System.Process-import Turtle hiding (FilePath)--getGitHash :: IO (Maybe String)-getGitHash =- liftM (Just . takeWhile (/='\n')) (readProcess "git" ["rev-parse", "--short", "HEAD"] "")- `catch` \(_::SomeException) -> return Nothing--getVersion :: FilePath -> IO Version-getVersion cabalFile = do- pkg <- readPackageDescription silent cabalFile- return $ pkgVersion $ package $ packageDescription $ pkg--main :: IO ()-main = do- gitHashMaybe <- getGitHash- version <- getVersion "../CPL.cabal"- let suffix_githash =- case gitHashMaybe of- Nothing -> ""- Just gitHash -> "_" ++ gitHash- dir :: IsString a => a- dir = fromString $ "CPL-" ++ showVersion version ++ suffix_githash ++ "-" ++ SysInfo.os ++ "-" ++ SysInfo.arch-- let binDir = dir </> "bin"- samplesDir = dir </> "samples"- zipFile :: IsString a => a- zipFile = fromString (dir ++ ".zip")- testfile zipFile >>= \b -> when b (rm zipFile)- testfile dir >>= \b -> when b (rmtree dir)- mktree dir- mktree binDir- mktree samplesDir- cp ("../cpl.exe") (binDir </> "cpl.exe")- sh $ do- fpath <- ls "../samples"- cp fpath (samplesDir </> filename fpath)- cp "../COPYING" (dir </> "COPYING")- cp "../README.markdown" (dir </> "README.markdown")- cp "../CHANGELOG.markdown" (dir </> "CHANGELOG.markdown")- procs "7z" ["a", "-r", zipFile, dir] empty- return ()