split out notebook into separate package

This involved:

- Moving a couple REPL modules into the Cryptol library hierarchy (those
  that don't depend on console libraries)
- Splitting up the Makefile, which unfortunately resulted in a lot of
  not-quite-duplication between the two Makefiles. Let's look into
  better abstraction...
This commit is contained in:
Adam C. Foltzer 2015-03-02 15:46:21 -08:00
parent bf25c5190f
commit 9923b6f11a
27 changed files with 1288 additions and 139 deletions

11
.gitignore vendored
View File

@ -1,4 +1,3 @@
*.pyc
*\#*
*~
.DS_Store
@ -11,7 +10,13 @@ results.xml
#docs/CryptolPrims.pdf
#docs/ProgrammingCryptol.pdf
#docs/Syntax.pdf
d#ocs/Version2Changes.pdf
#docs/Version2Changes.pdf
# don't check in distribution files
cryptol-2.*
cryptol-2.*
# temporary notebook stuff until we split out the repo
/ICryptol/ICryptol-2.*
/ICryptol/profile.tar
/ICryptol/profile_cryptol/security/
/ICryptol/profile_cryptol/startup/

31
ICryptol/ICryptol.cabal Normal file
View File

@ -0,0 +1,31 @@
Name: ICryptol
Version: 2.1.0
Synopsis: ICryptol: An IPython-style interface for Cryptol
License: BSD3
Author: Galois, Inc.
Maintainer: cryptol@galois.com
Copyright: 2013-2015 Galois Inc.
Category: Language
Build-type: Simple
Cabal-version: >= 1.18
flag static
default: False
description: Create a statically-linked binary
executable icryptol-kernel
Default-language:
Haskell2010
Main-is: Main_notebook.hs
hs-source-dirs: src
other-modules: Notebook
build-depends: base
, containers
, cryptol
, ipython-kernel >= 0.3
, text
, transformers
GHC-options: -Wall -O2
if os(linux) && flag(static)
ld-options: -static -pthread

30
ICryptol/LICENSE Normal file
View File

@ -0,0 +1,30 @@
Copyright (c) 2013-2014 Galois Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Galois, Inc. nor the names of its contributors
may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

37
ICryptol/LICENSE.rtf Normal file
View File

@ -0,0 +1,37 @@
{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww12600\viewh7800\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural
\f0\fs24 \cf0 Copyright (c) 2013-2014 Galois Inc.\
All rights reserved.\
\
Redistribution and use in source and binary forms, with or without\
modification, are permitted provided that the following conditions\
are met:\
\
* Redistributions of source code must retain the above copyright\
notice, this list of conditions and the following disclaimer.\
\
* Redistributions in binary form must reproduce the above copyright\
notice, this list of conditions and the following disclaimer in\
the documentation and/or other materials provided with the\
distribution.\
\
* Neither the name of Galois, Inc. nor the names of its contributors\
may be used to endorse or promote products derived from this\
software without specific prior written permission.\
\
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS\
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER\
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\
}

163
ICryptol/Makefile Normal file
View File

@ -0,0 +1,163 @@
HERE := $(dir $(lastword $(MAKEFILE_LIST)))
UNAME := $(shell uname -s)
ARCH := $(shell uname -m)
REV ?= $(shell git rev-parse --short=7 HEAD || echo "unknown")
VERSION := $(shell grep -i ^Version ICryptol.cabal | awk '{ print $$2}')
SYSTEM_DESC ?= ${UNAME}-${ARCH}_${REV}
PKG := ICryptol-${VERSION}-${SYSTEM_DESC}
CABAL := cabal
CABAL_BUILD := $(CABAL) build $(CABAL_BUILD_FLAGS)
CABAL_INSTALL := $(CABAL) install $(CABAL_INSTALL_FLAGS)
CS := $(HERE)/.cabal-sandbox
CS_BIN := $(CS)/bin
# Used only for windows, to find the right Program Files.
PROGRAM_FILES = Program\ Files\ \(x86\)
# Windows installer tools; assumes running on Cygwin and using WiX 3.8
WiX := /cygdrive/c/${PROGRAM_FILES}/WiX\ Toolset\ v3.8
CANDLE := ${WiX}/bin/candle.exe
HEAT := ${WiX}/bin/heat.exe
LIGHT := ${WiX}/bin/light.exe
# Windows-specific stuff
ifneq (,$(findstring _NT,${UNAME}))
DIST := ${PKG}.msi
EXE_EXT := .exe
adjust-path = '$(shell cygpath -w $1)'
PREFIX ?= ${PROGRAM_FILES}/Galois/ICryptol\ ${VERSION}
# split this up because `cabal copy` strips drive letters
PREFIX_ABS := /cygdrive/c/${PREFIX}
# since Windows installs aren't overlapping like /usr/local, we
# don't need this extra prefix
PREFIX_SHARE :=
# goes under the share prefix
PREFIX_DOC := /doc
PKG_PREFIX := ${PKG}/${PREFIX}
else
DIST := ${PKG}.tar.gz ${PKG}.zip
EXE_EXT :=
adjust-path = '$1'
PREFIX ?= /usr/local
PREFIX_ABS := ${PREFIX}
PREFIX_SHARE := /share
# goes under the share prefix
PREFIX_DOC := /doc/ICryptol
PKG_PREFIX := ${PKG}${PREFIX}
endif
ICRYPTOL_EXE := ./dist/build/cryptol/icryptol-kernel${EXE_EXT}
ICRYPTOL_SRC := \
$(shell find src \
\( -name \*.hs -or -name \*.x -or -name \*.y \) \
-and \( -not -name \*\#\* \) -print)
${ICRYPTOL_EXE}: ${ICRYPTOL_SRC} dist/setup-config
${CABAL_BUILD}
# TODO: piece this apart a bit more; if right now if something fails
# during initial setup, you have to invoke this target again manually
${CS}:
$(CABAL) sandbox init
${CS_BIN}/alex: | ${CS}
$(CABAL_INSTALL) alex
${CS_BIN}/happy: | ${CS} ${CS_BIN}/alex
$(CABAL_INSTALL) happy
dist/setup-config: ICryptol.cabal | ${CS_BIN}/alex ${CS_BIN}/happy
$(CABAL_INSTALL) --only-dependencies
$(CABAL) configure \
--prefix=$(call adjust-path,${PREFIX_ABS}) \
--datasubdir=ICryptol
.PHONY: all
all: ${ICRYPTOL_EXE}
.PHONY: dist
dist: ${DIST}
.PHONY: tarball
tarball: ${PKG}.tar.gz
.PHONY: zip
zip: ${PKG}.zip
.PHONY: msi
msi: ${PKG}.msi
.PHONY: notebook
notebook: ${PKG}
mkdir -p $(CURDIR)/.ipython
IPYTHONDIR=$(CURDIR)/.ipython \
PATH=$(call adjust-path,${CURDIR}/${PKG_BIN}):$$PATH \
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) \
${PKG_BIN}/icryptol --notebook-dir=$(call adjust-path,${PKG_EXAMPLES})
PROFILE_CRYPTOL_SRC := profile_cryptol/ipython_config.py \
profile_cryptol/static/base/images/ipynblogo.png \
profile_cryptol/static/custom/custom.css \
profile_cryptol/static/custom/custom.js
profile.tar: ${PROFILE_CRYPTOL_SRC}
tar -cvf profile.tar profile_cryptol
PKG_BIN := ${PKG_PREFIX}/bin
PKG_SHARE := ${PKG_PREFIX}${PREFIX_SHARE}
PKG_ICRY := ${PKG_SHARE}/ICryptol
PKG_DOC := ${PKG_SHARE}${PREFIX_DOC}
PKG_EXAMPLES := ${PKG_DOC}/examples
PKG_EXAMPLE_FILES := examples/AES.ipynb
${PKG}: ${ICRYPTOL_EXE} icryptol profile.tar LICENSE \
${PKG_EXAMPLE_FILES}
$(CABAL) copy --destdir=${PKG}
# script not included in the copy
cp icryptol ${PKG_BIN}
# don't want to bundle the cryptol library in the binary distribution
rm -rf ${PKG_PREFIX}/lib
mkdir -p ${PKG_ICRY}
mkdir -p ${PKG_DOC}
mkdir -p ${PKG_EXAMPLES}
cp LICENSE ${PKG_DOC}
for EXAMPLE in ${PKG_EXAMPLE_FILES}; do \
cp $$EXAMPLE ${PKG_EXAMPLES}; done
cp -r profile.tar ${PKG_ICRY}
${PKG}.tar.gz: ${PKG}
tar -czvf $@ $<
${PKG}.zip: ${PKG}
zip -r $@ $<
${PKG}.msi: ${PKG} win32/ICryptol.wxs
${HEAT} dir ${PKG_PREFIX} -o allfiles.wxs -nologo -var var.pkg \
-ag -wixvar -cg ALLFILES -srd -dr INSTALLDIR -sfrag
${CANDLE} -ext WixUIExtension -ext WixUtilExtension \
-dversion=${VERSION} -dpkg=${PKG_PREFIX} win32/ICryptol.wxs
${CANDLE} -ext WixUIExtension -ext WixUtilExtension \
-dversion=${VERSION} -dpkg=${PKG_PREFIX} allfiles.wxs
${LIGHT} -ext WixUIExtension -ext WixUtilExtension \
-sval -o $@ ICryptol.wixobj allfiles.wixobj
rm -f allfiles.wxs
rm -f *.wixobj
rm -f *.wixpdb
.PHONY: clean
clean:
cabal clean
rm -rf ICryptol-${VERSION}*/
rm -rf ICryptol-${VERSION}*.tar.gz
rm -rf ICryptol-${VERSION}*.zip
rm -rf ICryptol-${VERSION}*.msi
rm -rf .ipython
rm -rf profile.tar
.PHONY: squeaky
squeaky: clean
-$(CABAL) sandbox delete
rm -rf dist

865
ICryptol/cabal.config Normal file
View File

@ -0,0 +1,865 @@
-- Stackage snapshot from: http://www.stackage.org/snapshot/lts-1.10
-- Please place this file next to your .cabal file as cabal.config
-- To only use tested packages, uncomment the following line:
-- remote-repo: stackage-lts-1.10:http://www.stackage.org/snapshot/lts-1.10
constraints: abstract-deque ==0.3,
abstract-par ==0.3.3,
accelerate ==0.15.0.0,
ace ==0.6,
action-permutations ==0.0.0.1,
active ==0.1.0.18,
AC-Vector ==2.3.2,
ad ==4.2.1.1,
adjunctions ==4.2,
aeson ==0.8.0.2,
aeson-pretty ==0.7.2,
aeson-qq ==0.7.4,
aeson-utils ==0.2.2.1,
alarmclock ==0.2.0.5,
alex ==3.1.4,
amqp ==0.10.1,
ansi-terminal ==0.6.2.1,
ansi-wl-pprint ==0.6.7.1,
appar ==0.1.4,
approximate ==0.2.1.1,
arbtt ==0.8.1.4,
arithmoi ==0.4.1.1,
array installed,
arrow-list ==0.6.1.5,
asn1-data ==0.7.1,
asn1-encoding ==0.9.0,
asn1-parse ==0.9.0,
asn1-types ==0.3.0,
async ==2.0.2,
atto-lisp ==0.2.2,
attoparsec ==0.12.1.3,
attoparsec-conduit ==1.1.0,
attoparsec-enumerator ==0.3.3,
attoparsec-expr ==0.1.1.1,
authenticate ==1.3.2.11,
auto-update ==0.1.2.1,
aws ==0.11.2,
bake ==0.2,
bank-holidays-england ==0.1.0.2,
barecheck ==0.2.0.6,
base installed,
base16-bytestring ==0.1.1.6,
base64-bytestring ==1.0.0.1,
base-compat ==0.5.0,
base-prelude ==0.1.16,
base-unicode-symbols ==0.2.2.4,
basic-prelude ==0.3.11,
bifunctors ==4.2,
binary installed,
binary-conduit ==1.2.3,
binary-list ==1.0.1.0,
bindings-DSL ==1.0.22,
bioace ==0.0.1,
bioalign ==0.0.5,
biocore ==0.3.1,
biofasta ==0.0.3,
biofastq ==0.1,
biophd ==0.0.5,
biopsl ==0.4,
biosff ==0.3.7.1,
bits ==0.4,
BlastHTTP ==1.0.1,
blastxml ==0.3.2,
blaze-builder ==0.3.3.4,
blaze-builder-enumerator ==0.2.0.6,
blaze-html ==0.7.1.0,
blaze-markup ==0.6.3.0,
blaze-svg ==0.3.4.1,
blaze-textual ==0.2.0.9,
BlogLiterately ==0.7.1.7,
BlogLiterately-diagrams ==0.1.4.3,
bloodhound ==0.5.0.1,
bmp ==1.2.5.2,
Boolean ==0.2.3,
bool-extras ==0.4.0,
bound ==1.0.4,
BoundedChan ==1.0.3.0,
broadcast-chan ==0.1.0,
bson ==0.3.1,
bumper ==0.6.0.3,
byteable ==0.1.1,
bytedump ==1.0,
byteorder ==1.0.4,
bytes ==0.14.1.3,
bytestring installed,
bytestring-builder ==0.10.4.1.2,
bytestring-lexing ==0.4.3.2,
bytestring-mmap ==0.2.2,
bytestring-progress ==1.0.3,
bytestring-show ==0.3.5.6,
bytestring-trie ==0.2.4,
bzlib ==0.5.0.5,
bzlib-conduit ==0.2.1.3,
c2hs ==0.20.1,
Cabal installed,
cabal-install ==1.18.0.8,
cabal-src ==0.2.5,
cairo ==0.13.1.0,
case-insensitive ==1.2.0.4,
cases ==0.1.2,
cassava ==0.4.2.1,
cautious-file ==1.0.2,
cereal ==0.4.1.1,
cereal-conduit ==0.7.2.3,
certificate ==1.3.9,
charset ==0.3.7,
Chart ==1.3.3,
Chart-diagrams ==1.3.3,
ChasingBottoms ==1.3.0.11,
check-email ==1.0,
checkers ==0.4.1,
chell ==0.4.0.1,
chell-quickcheck ==0.2.4,
chunked-data ==0.1.0.1,
cipher-aes ==0.2.10,
cipher-blowfish ==0.0.3,
cipher-camellia ==0.0.2,
cipher-des ==0.0.6,
cipher-rc4 ==0.1.4,
circle-packing ==0.1.0.4,
classy-prelude ==0.10.5,
classy-prelude-conduit ==0.10.5,
classy-prelude-yesod ==0.10.5,
clientsession ==0.9.1.1,
clock ==0.4.1.3,
cmdargs ==0.10.12,
code-builder ==0.1.3,
colour ==2.3.3,
comonad ==4.2.2,
comonads-fd ==4.0,
comonad-transformers ==4.0,
compdata ==0.9,
compensated ==0.6.1,
composition ==1.0.1.0,
compressed ==3.10,
concatenative ==1.0.1,
concurrent-extra ==0.7.0.9,
concurrent-supply ==0.1.7,
cond ==0.4.1.1,
conduit ==1.2.4,
conduit-combinators ==0.3.0.6,
conduit-extra ==1.1.7.0,
configurator ==0.3.0.0,
connection ==0.2.4,
constraints ==0.4.1.3,
containers installed,
containers-unicode-symbols ==0.3.1.1,
contravariant ==1.2.0.1,
control-monad-free ==0.5.3,
control-monad-loop ==0.1,
convertible ==1.1.0.0,
cookie ==0.4.1.4,
courier ==0.1.0.15,
cpphs ==1.18.9,
cprng-aes ==0.6.1,
cpu ==0.1.2,
criterion ==1.0.2.0,
crypto-api ==0.13.2,
cryptocipher ==0.6.2,
crypto-cipher-tests ==0.0.11,
crypto-cipher-types ==0.0.9,
cryptohash ==0.11.6,
cryptohash-conduit ==0.1.1,
cryptohash-cryptoapi ==0.1.3,
crypto-numbers ==0.2.7,
crypto-pubkey ==0.2.8,
crypto-pubkey-types ==0.4.3,
crypto-random ==0.0.8,
crypto-random-api ==0.2.0,
css-text ==0.1.2.1,
csv ==0.1.2,
csv-conduit ==0.6.3,
curl ==1.3.8,
data-accessor ==0.2.2.6,
data-accessor-mtl ==0.2.0.4,
data-binary-ieee754 ==0.4.4,
data-default ==0.5.3,
data-default-class ==0.0.1,
data-default-instances-base ==0.0.1,
data-default-instances-containers ==0.0.1,
data-default-instances-dlist ==0.0.1,
data-default-instances-old-locale ==0.0.1,
data-inttrie ==0.1.0,
data-lens-light ==0.1.2.1,
data-memocombinators ==0.5.1,
data-reify ==0.6,
DAV ==1.0.3,
Decimal ==0.4.2,
deepseq installed,
deepseq-generics ==0.1.1.2,
derive ==2.5.21,
diagrams ==1.2,
diagrams-builder ==0.6.0.3,
diagrams-cairo ==1.2.0.6,
diagrams-contrib ==1.1.2.5,
diagrams-core ==1.2.0.5,
diagrams-haddock ==0.2.2.13,
diagrams-lib ==1.2.0.8,
diagrams-postscript ==1.1.0.4,
diagrams-svg ==1.1.0.4,
Diff ==0.3.0,
digest ==0.0.1.2,
digestive-functors ==0.7.1.4,
dimensional ==0.13.0.1,
directory installed,
directory-tree ==0.12.0,
direct-sqlite ==2.3.15,
distributed-process ==0.5.3,
distributed-process-async ==0.2.1,
distributed-process-client-server ==0.1.2,
distributed-process-execution ==0.1.1,
distributed-process-extras ==0.2.0,
distributed-process-simplelocalnet ==0.2.2.0,
distributed-process-supervisor ==0.1.2,
distributed-process-task ==0.1.1,
distributed-static ==0.3.1.0,
distributive ==0.4.4,
djinn-ghc ==0.0.2.3,
djinn-lib ==0.0.1.2,
dlist ==0.7.1,
dlist-instances ==0.1,
doctest ==0.9.12,
double-conversion ==2.0.1.0,
dual-tree ==0.2.0.5,
easy-file ==0.2.0,
either ==4.3.3.2,
elm-build-lib ==0.14.0.0,
elm-compiler ==0.14.1,
elm-core-sources ==1.0.0,
elm-package ==0.2.2,
email-validate ==2.0.1,
enclosed-exceptions ==1.0.1,
entropy ==0.3.5,
enumerator ==0.4.20,
eq ==4.0.3,
erf ==2.0.0.0,
errorcall-eq-instance ==0.1.0,
errors ==1.4.7,
ersatz ==0.2.6.1,
esqueleto ==2.1.2.1,
exceptions ==0.6.1,
exception-transformers ==0.3.0.4,
executable-path ==0.0.3,
extensible-exceptions ==0.1.1.4,
extra ==1.0.1,
failure ==0.2.0.3,
fast-logger ==2.2.3,
fay ==0.21.2.1,
fay-base ==0.19.4.2,
fay-builder ==0.2.0.3,
fay-dom ==0.5.0.1,
fay-jquery ==0.6.0.3,
fay-text ==0.3.2.2,
fay-uri ==0.2.0.0,
fb ==1.0.8,
fb-persistent ==0.3.4,
fclabels ==2.0.2.2,
FenwickTree ==0.1.2,
fgl ==5.5.0.1,
file-embed ==0.0.8.1,
file-location ==0.4.6,
filemanip ==0.3.6.3,
filepath installed,
fingertree ==0.1.0.1,
fixed ==0.2.1,
fixed-list ==0.1.5,
flexible-defaults ==0.0.1.1,
focus ==0.1.3,
foldl ==1.0.7,
FontyFruity ==0.4.1,
force-layout ==0.3.0.9,
foreign-store ==0.1,
formatting ==6.0.0,
fpco-api ==1.2.0.5,
free ==4.10.0.1,
freenect ==1.2,
frisby ==0.2,
fsnotify ==0.1.0.3,
fuzzcheck ==0.1.1,
gd ==3000.7.3,
generic-aeson ==0.2.0.2,
generic-deriving ==1.6.3,
GenericPretty ==1.2.1,
generics-sop ==0.1.1,
ghc-heap-view ==0.5.3,
ghcid ==0.3.4,
ghc-mod ==5.2.1.2,
ghc-mtl ==1.2.1.0,
ghc-paths ==0.1.0.9,
ghc-prim installed,
ghc-syb-utils ==0.2.3,
gio ==0.13.0.4,
git-embed ==0.1.0,
gl ==0.6.3,
glib ==0.13.1.0,
Glob ==0.7.5,
GLURaw ==1.4.0.2,
GLUT ==2.5.1.1,
graph-core ==0.2.1.0,
graphs ==0.5.0.1,
gravatar ==0.6,
groundhog ==0.7.0.2,
groundhog-mysql ==0.7.0.1,
groundhog-postgresql ==0.7.0.2,
groundhog-sqlite ==0.7.0.1,
groundhog-th ==0.7.0,
groupoids ==4.0,
groups ==0.4.0.0,
gtk ==0.13.4,
gtk2hs-buildtools ==0.13.0.3,
haddock-api ==2.15.0.2,
haddock-library ==1.1.1,
half ==0.2.0.1,
HandsomeSoup ==0.3.5,
happstack-server ==7.3.9,
happy ==1.19.5,
hashable ==1.2.3.1,
hashable-extras ==0.2.0.1,
hashmap ==1.3.0.1,
hashtables ==1.2.0.2,
haskeline installed,
haskell2010 installed,
haskell98 installed,
haskell-lexer ==1.0,
haskell-names ==0.4.1,
haskell-packages ==0.2.4.4,
haskell-src ==1.0.2.0,
haskell-src-exts ==1.16.0.1,
haskell-src-meta ==0.6.0.8,
hasql ==0.7.2,
hasql-backend ==0.4.0,
hasql-postgres ==0.10.2,
hastache ==0.6.1,
HaTeX ==3.16.0.0,
HaXml ==1.25.3,
haxr ==3000.10.3.1,
HCodecs ==0.5,
hdaemonize ==0.5.0.0,
hdevtools ==0.1.0.6,
heaps ==0.3.1,
hebrew-time ==0.1.1,
heist ==0.14.1,
here ==1.2.6,
heredoc ==0.2.0.0,
hflags ==0.4,
highlighting-kate ==0.5.11.1,
hinotify ==0.3.7,
hint ==0.4.2.2,
histogram-fill ==0.8.4.1,
hit ==0.6.3,
hjsmin ==0.1.4.7,
hledger ==0.24,
hledger-lib ==0.24,
hlibgit2 ==0.18.0.14,
hlint ==1.9.16,
hmatrix ==0.16.1.4,
hmatrix-gsl ==0.16.0.3,
hoauth2 ==0.4.3,
holy-project ==0.1.1.1,
hoogle ==4.2.38,
hoopl installed,
hOpenPGP ==1.11,
hostname ==1.0,
hostname-validate ==1.0.0,
hourglass ==0.2.8,
hpc installed,
hPDB ==1.2.0.2,
hPDB-examples ==1.2.0.1,
hs-bibutils ==5.5,
hscolour ==1.20.3,
hse-cpp ==0.1,
hslogger ==1.2.8,
hslua ==0.3.13,
hspec ==2.1.4,
hspec2 ==0.6.1,
hspec-core ==2.1.4,
hspec-discover ==2.1.4,
hspec-expectations ==0.6.1.1,
hspec-meta ==2.0.0,
hspec-wai ==0.6.3,
hspec-wai-json ==0.6.0,
HStringTemplate ==0.7.3,
hsyslog ==2.0,
HTF ==0.12.2.3,
html ==1.0.1.2,
html-conduit ==1.1.1.1,
HTTP ==4000.2.19,
http-client ==0.4.7.1,
http-client-tls ==0.2.2,
http-conduit ==2.1.5,
http-date ==0.0.5,
http-reverse-proxy ==0.4.1.2,
http-types ==0.8.6,
HUnit ==1.2.5.2,
hweblib ==0.6.3,
hxt ==9.3.1.15,
hxt-charproperties ==9.2.0.1,
hxt-http ==9.1.5.2,
hxt-pickle-utils ==0.1.0.2,
hxt-regex-xmlschema ==9.2.0.1,
hxt-relaxng ==9.1.5.5,
hxt-unicode ==9.0.2.4,
hybrid-vectors ==0.1.2.1,
hyphenation ==0.4.2,
idna ==0.3.0,
ieee754 ==0.7.6,
IfElse ==0.85,
imagesize-conduit ==1.0.0.4,
immortal ==0.2,
incremental-parser ==0.2.3.4,
indents ==0.3.3,
ini ==0.3.1,
integer-gmp installed,
integration ==0.2.0.1,
interpolate ==0.1.0,
interpolatedstring-perl6 ==0.9.0,
intervals ==0.7.1,
io-choice ==0.0.5,
io-manager ==0.1.0.2,
io-memoize ==1.1.1.0,
iproute ==1.3.1,
iterable ==3.0,
ixset ==1.0.6,
js-flot ==0.8.3,
js-jquery ==1.11.2,
json-autotype ==0.2.5.4,
json-schema ==0.7.3.1,
JuicyPixels ==3.2.2,
JuicyPixels-repa ==0.7,
kan-extensions ==4.2.1,
kdt ==0.2.2,
keter ==1.3.8,
keys ==3.10.1,
kure ==2.16.6,
language-c ==0.4.7,
language-ecmascript ==0.16.2,
language-glsl ==0.1.1,
language-haskell-extract ==0.2.4,
language-java ==0.2.7,
language-javascript ==0.5.13.3,
lazy-csv ==0.5,
lca ==0.2.4,
lens ==4.6.0.1,
lens-aeson ==1.0.0.3,
lens-family-th ==0.4.0.0,
lhs2tex ==1.18.1,
libgit ==0.3.0,
libnotify ==0.1.1.0,
lifted-async ==0.2.0.2,
lifted-base ==0.2.3.6,
linear ==1.15.5,
linear-accelerate ==0.2,
list-t ==0.4.3,
loch-th ==0.2.1,
log-domain ==0.9.3,
logfloat ==0.12.1,
logict ==0.6.0.2,
loop ==0.2.0,
lucid ==2.5,
lzma-conduit ==1.1.3,
machines ==0.4.1,
mandrill ==0.1.1.0,
map-syntax ==0.2,
markdown ==0.1.13.1,
markdown-unlit ==0.2.0.1,
math-functions ==0.1.5.2,
matrix ==0.3.4.2,
MaybeT ==0.1.2,
MemoTrie ==0.6.2,
mersenne-random-pure64 ==0.2.0.4,
messagepack ==0.3.0,
messagepack-rpc ==0.1.0.3,
mime-mail ==0.4.8.1,
mime-mail-ses ==0.3.2.2,
mime-types ==0.1.0.5,
missing-foreign ==0.1.1,
MissingH ==1.3.0.1,
mmap ==0.5.9,
mmorph ==1.0.4,
MonadCatchIO-transformers ==0.3.1.3,
monad-control ==0.3.3.1,
monad-coroutine ==0.8.0.1,
monadcryptorandom ==0.6.1,
monad-extras ==0.5.9,
monadic-arrays ==0.2.1.3,
monad-journal ==0.6.0.2,
monad-logger ==0.3.13.1,
monad-loops ==0.4.2.1,
monad-par ==0.3.4.7,
monad-parallel ==0.7.1.4,
monad-par-extras ==0.3.3,
monad-primitive ==0.1,
monad-products ==4.0.0.1,
MonadPrompt ==1.0.0.5,
MonadRandom ==0.3.0.1,
monad-st ==0.2.4,
monads-tf ==0.1.0.2,
mongoDB ==2.0.3,
monoid-extras ==0.3.3.5,
monoid-subclasses ==0.3.6.2,
mono-traversable ==0.7.0,
mtl ==2.1.3.1,
mtlparse ==0.1.4.0,
mtl-prelude ==1.0.3,
multimap ==1.2.1,
multipart ==0.1.2,
MusicBrainz ==0.2.3,
mutable-containers ==0.2.1.2,
mwc-random ==0.13.3.0,
mysql ==0.1.1.7,
mysql-simple ==0.2.2.4,
nanospec ==0.2.0,
nats ==1,
neat-interpolation ==0.2.2,
nettle ==0.1.0,
network ==2.6.0.2,
network-conduit-tls ==1.1.0.2,
network-info ==0.2.0.5,
network-multicast ==0.0.11,
network-simple ==0.4.0.4,
network-transport ==0.4.1.0,
network-transport-tcp ==0.4.1,
network-transport-tests ==0.2.2.0,
network-uri ==2.6.0.1,
newtype ==0.2,
nsis ==0.2.4,
numbers ==3000.2.0.1,
numeric-extras ==0.0.3,
NumInstances ==1.4,
numtype ==1.1,
Octree ==0.5.4.2,
old-locale installed,
old-time installed,
OneTuple ==0.2.1,
opaleye ==0.3.1,
OpenGL ==2.9.2.0,
OpenGLRaw ==1.5.0.1,
openpgp-asciiarmor ==0.1,
operational ==0.2.3.2,
options ==1.2.1.1,
optparse-applicative ==0.11.0.2,
osdkeys ==0.0,
pandoc ==1.13.2,
pandoc-citeproc ==0.6,
pandoc-types ==1.12.4.1,
pango ==0.13.0.5,
parallel ==3.2.0.6,
parallel-io ==0.3.3,
parseargs ==0.1.5.2,
parsec ==3.1.8,
parsers ==0.12.1.1,
partial-handler ==0.1.0,
path-pieces ==0.1.5,
patience ==0.1.1,
pcre-light ==0.4.0.3,
pdfinfo ==1.5.2,
pem ==0.2.2,
persistent ==2.1.1.7,
persistent-mongoDB ==2.1.2.1,
persistent-mysql ==2.1.2.1,
persistent-postgresql ==2.1.2.2,
persistent-sqlite ==2.1.1.2,
persistent-template ==2.1.0.1,
phantom-state ==0.2.0.2,
pipes ==4.1.4,
pipes-concurrency ==2.0.3,
pipes-parse ==3.0.2,
placeholders ==0.1,
pointed ==4.2,
polyparse ==1.10,
pool-conduit ==0.1.2.3,
postgresql-binary ==0.5.1,
postgresql-libpq ==0.9.0.2,
postgresql-simple ==0.4.10.0,
pqueue ==1.2.1,
prefix-units ==0.1.0.2,
prelude-extras ==0.4,
present ==2.2,
pretty installed,
prettyclass ==1.0.0.0,
pretty-class ==1.0.1.1,
pretty-show ==1.6.8,
primes ==0.2.1.0,
primitive ==0.5.4.0,
process installed,
process-conduit ==1.2.0.1,
process-extras ==0.2.0,
product-profunctors ==0.6,
profunctor-extras ==4.0,
profunctors ==4.3.2,
project-template ==0.1.4.2,
publicsuffixlist ==0.1,
punycode ==2.0,
pure-io ==0.2.1,
pureMD5 ==2.1.2.1,
pwstore-fast ==2.4.4,
quandl-api ==0.2.0.0,
QuasiText ==0.1.2.5,
QuickCheck ==2.7.6,
quickcheck-assertions ==0.1.1,
quickcheck-instances ==0.3.10,
quickcheck-io ==0.1.1,
quickcheck-unicode ==1.0.0.0,
quickpull ==0.4.0.0,
rainbow ==0.20.0.4,
rainbow-tests ==0.20.0.4,
random ==1.0.1.1,
random-fu ==0.2.6.2,
random-shuffle ==0.0.4,
random-source ==0.3.0.6,
rank1dynamic ==0.2.0.1,
Rasterific ==0.4.2,
raw-strings-qq ==1.0.2,
ReadArgs ==1.2.2,
reducers ==3.10.3.1,
reflection ==1.5.1.1,
regex-applicative ==0.3.1,
regex-base ==0.93.2,
regex-compat ==0.95.1,
regex-pcre-builtin ==0.94.4.8.8.35,
regex-posix ==0.95.2,
regexpr ==0.5.4,
regex-tdfa ==1.2.0,
regex-tdfa-rc ==1.1.8.3,
regular ==0.3.4.4,
regular-xmlpickler ==0.2,
rematch ==0.2.0.0,
repa ==3.3.1.2,
repa-algorithms ==3.3.1.2,
repa-devil ==0.3.2.2,
repa-io ==3.3.1.2,
reroute ==0.2.2.1,
resource-pool ==0.2.3.2,
resourcet ==1.1.4.1,
rest-client ==0.4.0.5,
rest-core ==0.33.1.2,
rest-gen ==0.16.1.8,
rest-happstack ==0.2.10.4,
rest-snap ==0.1.17.14,
rest-stringmap ==0.2.0.3,
rest-types ==1.11.1.1,
rest-wai ==0.1.0.4,
rev-state ==0.1,
rfc5051 ==0.1.0.3,
runmemo ==1.0.0.1,
rvar ==0.2.0.2,
safe ==0.3.8,
safecopy ==0.8.4,
scientific ==0.3.3.7,
scotty ==0.9.0,
scrobble ==0.2.1.1,
securemem ==0.1.7,
semigroupoid-extras ==4.0,
semigroupoids ==4.2,
semigroups ==0.16.1,
sendfile ==0.7.9,
seqloc ==0.6.1.1,
setenv ==0.1.1.3,
SHA ==1.6.4.1,
shake ==0.14.3,
shake-language-c ==0.6.4,
shakespeare ==2.0.4.1,
shakespeare-i18n ==1.1.0,
shakespeare-text ==1.1.0,
shell-conduit ==4.5.2,
shelly ==1.5.7,
silently ==1.2.4.1,
simple-reflect ==0.3.2,
simple-sendfile ==0.2.18,
singletons ==1.0,
siphash ==1.0.3,
skein ==1.0.9.2,
slave-thread ==0.1.5,
smallcheck ==1.1.1,
smtLib ==1.0.7,
snap ==0.13.3.2,
snap-core ==0.9.6.4,
snaplet-fay ==0.3.3.10,
snap-server ==0.9.4.6,
socks ==0.5.4,
sodium ==0.11.0.3,
sourcemap ==0.1.3.0,
speculation ==1.5.0.1,
sphinx ==0.6.0.1,
split ==0.2.2,
Spock ==0.7.7.0,
Spock-digestive ==0.1.0.0,
Spock-worker ==0.2.1.3,
spoon ==0.3.1,
sqlite-simple ==0.4.8.0,
stackage ==0.3.1,
stateref ==0.3,
statestack ==0.2.0.3,
statistics ==0.13.2.1,
statistics-linreg ==0.3,
stm ==2.4.4,
stm-chans ==3.0.0.2,
stm-conduit ==2.5.4,
stm-containers ==0.2.8,
stm-stats ==0.2.0.0,
storable-complex ==0.2.2,
storable-endian ==0.2.5,
streaming-commons ==0.1.10.0,
streams ==3.2,
strict ==0.3.2,
stringable ==0.1.3,
stringbuilder ==0.5.0,
stringprep ==1.0.0,
stringsearch ==0.3.6.5,
stylish-haskell ==0.5.11.1,
SVGFonts ==1.4.0.3,
syb ==0.4.4,
syb-with-class ==0.6.1.5,
system-canonicalpath ==0.2.3.0,
system-fileio ==0.3.16.1,
system-filepath ==0.4.13.2,
system-posix-redirect ==1.1.0.1,
tabular ==0.2.2.7,
tagged ==0.7.3,
tagshare ==0.0,
tagsoup ==0.13.3,
tagstream-conduit ==0.5.5.3,
tar ==0.4.1.0,
tardis ==0.3.0.0,
tasty ==0.10.1,
tasty-ant-xml ==1.0.1,
tasty-golden ==2.2.2.4,
tasty-hunit ==0.9.1,
tasty-kat ==0.0.3,
tasty-quickcheck ==0.8.3.2,
tasty-smallcheck ==0.8.0.1,
tasty-th ==0.1.3,
template-haskell installed,
temporary ==1.2.0.3,
temporary-rc ==1.2.0.3,
terminal-progress-bar ==0.0.1.4,
terminal-size ==0.3.0,
terminfo installed,
test-framework ==0.8.1.1,
test-framework-hunit ==0.3.0.1,
test-framework-quickcheck2 ==0.3.0.3,
test-framework-th ==0.2.4,
testing-feat ==0.4.0.2,
testpack ==2.1.3.0,
texmath ==0.8.0.1,
text ==1.2.0.4,
text-binary ==0.1.0,
text-format ==0.3.1.1,
text-icu ==0.7.0.1,
tf-random ==0.5,
th-desugar ==1.4.2.1,
th-expand-syns ==0.3.0.5,
th-extras ==0.0.0.2,
th-lift ==0.7.2,
th-orphans ==0.8.3,
threads ==0.5.1.3,
th-reify-many ==0.1.3,
thyme ==0.3.5.5,
time installed,
time-compat ==0.1.0.3,
time-lens ==0.4.0.1,
timezone-olson ==0.1.6,
timezone-series ==0.1.4,
tls ==1.2.16,
tls-debug ==0.3.4,
tostring ==0.2.1.1,
transformers installed,
transformers-base ==0.4.4,
transformers-compat ==0.3.3.3,
traverse-with-class ==0.2.0.3,
tree-view ==0.4,
tuple ==0.3.0.2,
type-eq ==0.4.2,
type-list ==0.0.0.1,
udbus ==0.2.1,
unbounded-delays ==0.1.0.9,
union-find ==0.2,
uniplate ==1.6.12,
unix installed,
unix-compat ==0.4.1.4,
unix-time ==0.3.5,
unordered-containers ==0.2.5.1,
uri-encode ==1.5.0.4,
url ==2.1.3,
utf8-light ==0.4.2,
utf8-string ==0.3.8,
uuid ==1.3.8,
vault ==0.3.0.4,
vector ==0.10.12.2,
vector-algorithms ==0.6.0.3,
vector-binary-instances ==0.2.1.0,
vector-instances ==3.3.0.1,
vector-space ==0.8.7,
vector-space-points ==0.2.1,
vector-th-unbox ==0.2.1.2,
vhd ==0.2.2,
void ==0.7,
wai ==3.0.2.3,
wai-app-static ==3.0.0.6,
wai-conduit ==3.0.0.2,
wai-eventsource ==3.0.0,
wai-extra ==3.0.4.5,
wai-logger ==2.2.3,
wai-middleware-static ==0.6.0.1,
wai-websockets ==3.0.0.5,
warp ==3.0.9.2,
warp-tls ==3.0.2,
webdriver ==0.6.1,
web-fpco ==0.1.1.0,
websockets ==0.9.3.0,
wizards ==1.0.1,
wl-pprint ==1.1,
wl-pprint-extras ==3.5.0.4,
wl-pprint-terminfo ==3.7.1.3,
wl-pprint-text ==1.1.0.3,
word8 ==0.1.2,
wordpass ==1.0.0.2,
X11 ==1.6.1.2,
x509 ==1.5.0.1,
x509-store ==1.5.0,
x509-system ==1.5.0,
x509-validation ==1.5.1,
xenstore ==0.1.1,
xhtml installed,
xml ==1.3.14,
xml-conduit ==1.2.3.3,
xmlgen ==0.6.2.1,
xml-hamlet ==0.4.0.10,
xmlhtml ==0.2.3.4,
xml-types ==0.3.4,
xss-sanitize ==0.3.5.5,
yackage ==0.7.0.6,
yaml ==0.8.10.1,
Yampa ==0.9.6,
YampaSynth ==0.2,
yesod ==1.4.1.4,
yesod-auth ==1.4.3.1,
yesod-auth-deskcom ==1.4.0,
yesod-auth-fb ==1.6.6,
yesod-auth-hashdb ==1.4.1.2,
yesod-auth-oauth2 ==0.0.12,
yesod-bin ==1.4.3.10,
yesod-core ==1.4.8.1,
yesod-eventsource ==1.4.0.1,
yesod-fay ==0.7.1,
yesod-fb ==0.3.4,
yesod-form ==1.4.4,
yesod-gitrepo ==0.1.1.0,
yesod-newsfeed ==1.4.0.1,
yesod-persistent ==1.4.0.2,
yesod-sitemap ==1.4.0.1,
yesod-static ==1.4.0.4,
yesod-test ==1.4.3.1,
yesod-text-markdown ==0.1.7,
yesod-websockets ==0.2.1.1,
zeromq4-haskell ==0.6.3,
zip-archive ==0.2.3.7,
zlib ==0.5.4.2,
zlib-bindings ==0.1.1.5,
zlib-enum ==0.2.3.1,
zlib-lens ==0.1.1.1

View File

@ -12,9 +12,11 @@
# POSIX layout for the installation of the icryptol-kernel executable
# and the profile.tar that contains the basic cryptol profile for
# IPython. By setting the IPYTHONDIR environment variable, you can
# control where this profile is created (by default it should be in
# control where this profile is created (if not set it will be in
# $HOME/.ipython).
IPYTHONDIR=${IPYTHONDIR:-$HOME/.ipython}
set -e
command -v ipython >/dev/null 2>&1 || {
@ -29,7 +31,7 @@ command -v icryptol-kernel >/dev/null 2>&1 || {
ipython locate profile cryptol 2>&1 || {
tar -C $IPYTHONDIR \
-xf $(dirname $(which icryptol-kernel))/../share/icryptol/profile.tar
-xf $(dirname $(which icryptol-kernel))/../share/ICryptol/profile.tar
}
ipython notebook --profile=cryptol $@

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -10,9 +10,9 @@ module Main where
import Notebook
import REPL.Command
import REPL.Monad (lName, lPath)
import qualified REPL.Monad as REPL
import Cryptol.REPL.Command
import Cryptol.REPL.Monad (lName, lPath)
import qualified Cryptol.REPL.Monad as REPL
import qualified Cryptol.ModuleSystem as M
import qualified Cryptol.ModuleSystem.Monad as M (setFocusedModule)
@ -45,10 +45,8 @@ main = do
easyKernel profileFile cryptolConfig
_ -> do
putStrLn "Usage:"
putStrLn "cryptolnb kernel FILE -- run a kernel with FILE for \
putStrLn "icryptol-kernel kernel FILE -- run a kernel with FILE for \
\communication with the frontend"
-- Kernel Configuration --------------------------------------------------------
cryptolConfig :: KernelConfig NB String String

View File

@ -9,9 +9,9 @@
{-# LANGUAGE DeriveDataTypeable #-}
module Notebook where
import REPL.Command (loadPrelude,findNbCommand,parseCommand,runCommand,replParse,liftModuleCmd)
import REPL.Monad (REPL(..) ,runREPL, lName, lPath)
import qualified REPL.Monad as REPL
import Cryptol.REPL.Command (loadPrelude,findNbCommand,parseCommand,runCommand,replParse,liftModuleCmd)
import Cryptol.REPL.Monad (REPL(..) ,runREPL, lName, lPath)
import qualified Cryptol.REPL.Monad as REPL
import qualified Cryptol.ModuleSystem as M
import Cryptol.Parser (defaultConfig, parseModule, Config(..), ParseError)

View File

@ -0,0 +1,73 @@
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<!-- NOTE: WiX doesn't support non-decimal versions -->
<Product Name='ICryptol $(var.version)'
Version='$(var.version)'
Manufacturer='Galois, Inc.'
Id='*'
UpgradeCode='49DAA415-C201-41EE-9448-162F667EBEC0'
Language='1033'
Codepage='1252'>
<Package Description="ICryptol $(var.version) Installer"
Manufacturer='Galois, Inc.'
InstallerVersion='200'
Compressed='yes' />
<Media Id='1' Cabinet='ICryptol.cab' EmbedCab='yes' />
<MajorUpgrade DowngradeErrorMessage="A newer version of ICryptol is already installed. Setup will now exit." />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='Galois' Name='Galois'>
<Directory Id='INSTALLDIR' Name='ICryptol $(var.version)'>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="ICryptol $(var.version)">
<Component Id="Shortcuts" Guid="444691AD-2300-48C7-9984-F893A902AE33">
<Shortcut Id="startmenuICryptol"
Name="ICryptol $(var.version)"
WorkingDirectory='INSTALLDIR'
Target="[INSTALLDIR]\bin\ICryptol.bat"
Icon="crypto.ico"
IconIndex="0" />
<!-- <Shortcut Id="startmenuTutorial" -->
<!-- Name="Cryptol Tutorial" -->
<!-- Target="[DOCDIR]Cryptol-Tutorial.pdf" -->
<!-- WorkingDirectory='INSTALLDIR' -->
<!-- IconIndex="0" /> -->
<!-- <Shortcut Id="startmenuGuide" -->
<!-- Name="Cryptol Programming Guide" -->
<!-- Target="[DOCDIR]ProgrammingGuide.pdf" -->
<!-- WorkingDirectory='INSTALLDIR' -->
<!-- IconIndex="0" /> -->
<RegistryValue Root='HKCU' Key='Software\Galois\ICryptol'
Name='installed' Type='integer' Value='1'
KeyPath='yes' />
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id='Complete' Level='1'>
<ComponentGroupRef Id='ALLFILES' />
<ComponentRef Id='Shortcuts' />
</Feature>
<Icon Id="crypto.ico" SourceFile="win32/crypto.ico" />
<UI>
<UIRef Id="WixUI_Minimal" />
</UI>
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
</Product>
</Wix>

BIN
ICryptol/win32/crypto.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@ -55,7 +55,6 @@ else
endif
CRYPTOL_EXE := ./dist/build/cryptol/cryptol${EXE_EXT}
ICRYPTOL_EXE := ./dist/build/cryptol/icryptol-kernel${EXE_EXT}
.PHONY: all
all: ${CRYPTOL_EXE}
@ -64,14 +63,6 @@ all: ${CRYPTOL_EXE}
run: ${CRYPTOL_EXE}
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) ${CRYPTOL_EXE}
.PHONY: notebook
notebook: ${PKG}
mkdir -p $(CURDIR)/.ipython
IPYTHONDIR=$(CURDIR)/.ipython \
PATH=$(call adjust-path,${CURDIR}/${PKG_BIN}):$$PATH \
CRYPTOLPATH=$(call adjust-path,$(CURDIR)/lib) \
${PKG_BIN}/icryptol --notebook-dir=$(call adjust-path,${PKG_EXNB})
.PHONY: docs
docs:
(cd docs; make)
@ -105,37 +96,27 @@ CRYPTOL_SRC := \
-and \( -not -name \*\#\* \) -print) \
$(shell find lib -name \*.cry)
ICRYPTOL_SRC := \
$(shell find cryptol notebook \
\( -name \*.hs -or -name \*.x -or -name \*.y \) \
-and \( -not -name \*\#\* \) -print)
src/GitRev.hs: .git/index
sh configure
print-%:
@echo $* = $($*)
# /usr/share/cryptol on POSIX, installdir/cryptol on Windows
DATADIR := ${PREFIX_ABS}${PREFIX_SHARE}
dist/setup-config: cryptol.cabal | ${CS_BIN}/alex ${CS_BIN}/happy
$(CABAL_INSTALL) --only-dependencies
$(CABAL) configure \
--prefix=$(call adjust-path,${PREFIX_ABS}) \
--datasubdir=cryptol
${CRYPTOL_EXE} ${ICRYPTOL_EXE}: $(CRYPTOL_SRC) $(ICRYPTOL_SRC) src/GitRev.hs dist/setup-config
${CRYPTOL_EXE}: $(CRYPTOL_SRC) src/GitRev.hs dist/setup-config
$(CABAL_BUILD)
PKG_BIN := ${PKG_PREFIX}/bin
PKG_SHARE := ${PKG_PREFIX}${PREFIX_SHARE}
PKG_CRY := ${PKG_SHARE}/cryptol
PKG_ICRY := ${PKG_SHARE}/icryptol
PKG_DOC := ${PKG_SHARE}${PREFIX_DOC}
PKG_EXAMPLES := ${PKG_DOC}/examples
PKG_EXNB := ${PKG_EXAMPLES}/notebook
PKG_EXCONTRIB := ${PKG_EXAMPLES}/contrib
PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
@ -146,45 +127,30 @@ PKG_EXAMPLE_FILES := docs/ProgrammingCryptol/aes/AES.cry \
examples/Test.cry \
examples/SHA1.cry \
PKG_EXNB_FILES := examples/notebook/AES.ipynb
PKG_EXCONTRIB_FILES := examples/contrib/mkrand.cry \
examples/contrib/RC4.cry \
examples/contrib/simon.cry \
examples/contrib/speck.cry
PROFILE_CRYPTOL_SRC := notebook/profile_cryptol/ipython_config.py \
notebook/profile_cryptol/static/base/images/ipynblogo.png \
notebook/profile_cryptol/static/custom/custom.css \
notebook/profile_cryptol/static/custom/custom.js
notebook/profile.tar: ${PROFILE_CRYPTOL_SRC}
(cd notebook && tar -cvf profile.tar profile_cryptol)
${PKG}: ${CRYPTOL_EXE} ${ICRYPTOL_EXE} \
notebook/icryptol notebook/profile.tar \
${PKG}: ${CRYPTOL_EXE} \
docs/*.md docs/*.pdf LICENSE \
${PKG_EXAMPLE_FILES} ${PKG_EXCONTRIB_FILES}
$(CABAL) copy --destdir=${PKG}
# script not included in the copy
cp notebook/icryptol ${PKG_BIN}
# don't want to bundle the cryptol library in the binary distribution
rm -rf ${PKG_PREFIX}/lib
mkdir -p ${PKG_CRY}
mkdir -p ${PKG_ICRY}
mkdir -p ${PKG_DOC}
mkdir -p ${PKG_EXAMPLES}
mkdir -p ${PKG_EXNB}
mkdir -p ${PKG_EXCONTRIB}
cp docs/*.md ${PKG_DOC}
cp docs/*.pdf ${PKG_DOC}
cp LICENSE ${PKG_DOC}
for EXAMPLE in ${PKG_EXAMPLE_FILES}; do \
cp $$EXAMPLE ${PKG_EXAMPLES}; done
for EXAMPLE in ${PKG_EXNB_FILES}; do \
cp $$EXAMPLE ${PKG_EXNB}; done
for EXAMPLE in ${PKG_EXCONTRIB_FILES}; do \
cp $$EXAMPLE ${PKG_EXCONTRIB}; done
cp -r notebook/profile.tar ${PKG_ICRY}
${PKG}.tar.gz: ${PKG}
tar -czvf $@ $<
@ -233,7 +199,6 @@ clean:
rm -rf cryptol-${VERSION}*.tar.gz
rm -rf cryptol-${VERSION}*.zip
rm -rf cryptol-${VERSION}*.msi
rm -rf .ipython
.PHONY: squeaky
squeaky: clean

View File

@ -18,10 +18,6 @@ flag static
default: False
description: Create a statically-linked binary
flag notebook
default: True
description: Build the IPython-style Cryptol notebook interface
library
Default-language:
Haskell98
@ -118,12 +114,16 @@ library
Cryptol.Eval.Value,
Cryptol.Testing.Random,
Cryptol.Testing.Exhaust
Cryptol.Testing.Exhaust,
Cryptol.Symbolic
Cryptol.Symbolic.BitVector
Cryptol.Symbolic.Prims
Cryptol.Symbolic.Value
Cryptol.Symbolic,
Cryptol.Symbolic.BitVector,
Cryptol.Symbolic.Prims,
Cryptol.Symbolic.Value,
Cryptol.REPL.Command,
Cryptol.REPL.Monad,
Cryptol.REPL.Trie
Other-modules: Cryptol.Parser.LexerUtils,
Cryptol.Parser.ParserUtils,
@ -139,11 +139,8 @@ executable cryptol
Main-is: Main.hs
hs-source-dirs: cryptol
Other-modules: OptParser,
REPL.Command,
REPL.Haskeline,
REPL.Logo,
REPL.Monad,
REPL.Trie,
Paths_cryptol
build-depends: ansi-terminal
, base
@ -164,34 +161,3 @@ executable cryptol
if os(linux) && flag(static)
ld-options: -static -pthread
executable icryptol-kernel
if flag(notebook)
buildable: True
else
buildable: False
Default-language:
Haskell98
Main-is: Main_notebook.hs
hs-source-dirs: cryptol, notebook
other-modules: Notebook
build-depends: ansi-terminal
, base
, containers
, cryptol
, deepseq
, directory
, filepath
, haskeline
, ipython-kernel >= 0.3
, monadLib
, process
, random
, sbv >= 4.0
, text
, tf-random
, transformers
GHC-options: -Wall -O2
if os(linux) && flag(static)
ld-options: -static -pthread

View File

@ -12,12 +12,12 @@
module Main where
import OptParser
import REPL.Command (loadCmd,loadPrelude)
import Cryptol.REPL.Command (loadCmd,loadPrelude)
import Cryptol.REPL.Monad (REPL,updateREPLTitle,setUpdateREPLTitle,
io,DotCryptol(..),prependSearchPath,setSearchPath)
import qualified Cryptol.REPL.Monad as REPL
import REPL.Haskeline
import REPL.Monad (REPL,setREPLTitle,io,DotCryptol(..),
prependSearchPath,setSearchPath)
import REPL.Logo
import qualified REPL.Monad as REPL
import Paths_cryptol (version)
import Cryptol.Version (commitHash, commitBranch, commitDirty)
@ -144,7 +144,8 @@ main = do
setupREPL :: Options -> REPL ()
setupREPL opts = do
displayLogo True
setREPLTitle
setUpdateREPLTitle setREPLTitle
updateREPLTitle
mCryptolPath <- io $ lookupEnv "CRYPTOLPATH"
case mCryptolPath of
Nothing -> return ()

View File

@ -12,9 +12,10 @@
module REPL.Haskeline where
import REPL.Command
import REPL.Monad
import REPL.Trie
import Cryptol.REPL.Command
import Cryptol.REPL.Monad
import Cryptol.REPL.Trie
import Cryptol.Utils.PP
import qualified Control.Exception as X
import Control.Monad (guard, when)
@ -23,13 +24,13 @@ import qualified Control.Monad.Trans.Class as MTL
import Data.Char (isAlphaNum, isSpace)
import Data.Function (on)
import Data.List (isPrefixOf,nub,sortBy)
import System.Console.ANSI (setTitle)
import System.Console.Haskeline
import System.Directory ( doesFileExist
, getHomeDirectory
, getCurrentDirectory)
import System.FilePath ((</>))
-- | Haskeline-specific repl implementation.
repl :: DotCryptol -> Maybe FilePath -> REPL () -> IO ()
repl dotC mbBatch begin =
@ -124,6 +125,16 @@ instance MonadException REPL where
return (return a)
unREPL runBody ref
-- Titles ----------------------------------------------------------------------
mkTitle :: Maybe LoadedModule -> String
mkTitle lm = maybe "" (\ m -> pretty m ++ " - ") (lName =<< lm)
++ "cryptol"
setREPLTitle :: REPL ()
setREPLTitle = do
lm <- getLoadedMod
io (setTitle (mkTitle lm))
-- Completion ------------------------------------------------------------------

View File

@ -8,7 +8,7 @@
module REPL.Logo where
import REPL.Monad
import Cryptol.REPL.Monad
import Paths_cryptol (version)
import Cryptol.Version (commitShortHash)

View File

@ -7,7 +7,7 @@
-- Portability : portable
{-# LANGUAGE CPP, PatternGuards, FlexibleContexts #-}
module REPL.Command (
module Cryptol.REPL.Command (
-- * Commands
Command(..), CommandDescr(..), CommandBody(..)
, parseCommand
@ -29,8 +29,8 @@ module REPL.Command (
, moduleCmdResult
) where
import REPL.Monad
import REPL.Trie
import Cryptol.REPL.Monad
import Cryptol.REPL.Trie
import qualified Cryptol.ModuleSystem as M
import qualified Cryptol.ModuleSystem.Base as M (preludeName)
@ -212,7 +212,7 @@ genHelp cs = map cmdHelp cs
runCommand :: Command -> REPL ()
runCommand c = case c of
Command cmd -> cmd `REPL.Monad.catch` handler
Command cmd -> cmd `Cryptol.REPL.Monad.catch` handler
where
handler re = rPutStrLn "" >> rPrint (pp re)

View File

@ -11,7 +11,7 @@
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE LambdaCase #-}
module REPL.Monad (
module Cryptol.REPL.Monad (
-- * REPL Monad
REPL(..), runREPL
, io
@ -45,7 +45,8 @@ module REPL.Monad (
, disableLet
, enableLet
, getLetEnabled
, setREPLTitle
, updateREPLTitle
, setUpdateREPLTitle
-- ** Config Options
, EnvVal(..)
@ -58,7 +59,7 @@ module REPL.Monad (
, setPutStr
) where
import REPL.Trie
import Cryptol.REPL.Trie
import Cryptol.Prims.Types(typeOf)
import Cryptol.Prims.Syntax(ECon(..),ppPrefix)
@ -82,7 +83,6 @@ import Data.IORef
import Data.List (isPrefixOf)
import Data.Monoid (Monoid(..))
import Data.Typeable (Typeable)
import System.Console.ANSI (setTitle)
import qualified Control.Exception as X
import qualified Data.Map as Map
import Text.Read (readMaybe)
@ -97,16 +97,17 @@ data LoadedModule = LoadedModule
, lPath :: FilePath -- ^ Focused file
}
-- REPL RW Environment.
-- | REPL RW Environment.
data RW = RW
{ eLoadedMod :: Maybe LoadedModule
, eContinue :: Bool
, eIsBatch :: Bool
, eModuleEnv :: M.ModuleEnv
, eNameSupply :: Int
, eUserEnv :: UserEnv
, ePutStr :: String -> IO ()
, eLetEnabled :: Bool
{ eLoadedMod :: Maybe LoadedModule
, eContinue :: Bool
, eIsBatch :: Bool
, eModuleEnv :: M.ModuleEnv
, eNameSupply :: Int
, eUserEnv :: UserEnv
, ePutStr :: String -> IO ()
, eLetEnabled :: Bool
, eUpdateTitle :: REPL ()
}
-- | Initial, empty environment.
@ -114,14 +115,15 @@ defaultRW :: Bool -> IO RW
defaultRW isBatch = do
env <- M.initialModuleEnv
return RW
{ eLoadedMod = Nothing
, eContinue = True
, eIsBatch = isBatch
, eModuleEnv = env
, eNameSupply = 0
, eUserEnv = mkUserEnv userOptions
, ePutStr = putStr
, eLetEnabled = True
{ eLoadedMod = Nothing
, eContinue = True
, eIsBatch = isBatch
, eModuleEnv = env
, eNameSupply = 0
, eUserEnv = mkUserEnv userOptions
, ePutStr = putStr
, eLetEnabled = True
, eUpdateTitle = return ()
}
-- | Build up the prompt for the REPL.
@ -130,11 +132,6 @@ mkPrompt rw
| eIsBatch rw = ""
| otherwise = maybe "cryptol" pretty (lName =<< eLoadedMod rw) ++ "> "
mkTitle :: RW -> String
mkTitle rw = maybe "" (\ m -> pretty m ++ " - ") (lName =<< eLoadedMod rw)
++ "cryptol"
-- REPL Monad ------------------------------------------------------------------
-- | REPL_ context with InputT handling.
@ -244,7 +241,7 @@ getPrompt = mkPrompt `fmap` getRW
setLoadedMod :: LoadedModule -> REPL ()
setLoadedMod n = do
modifyRW_ (\ rw -> rw { eLoadedMod = Just n })
setREPLTitle
updateREPLTitle
getLoadedMod :: REPL (Maybe LoadedModule)
getLoadedMod = eLoadedMod `fmap` getRW
@ -289,10 +286,15 @@ enableLet = modifyRW_ (\ rw -> rw { eLetEnabled = True })
getLetEnabled :: REPL Bool
getLetEnabled = fmap eLetEnabled getRW
setREPLTitle :: REPL ()
setREPLTitle = unlessBatch $ do
-- | Update the title
updateREPLTitle :: REPL ()
updateREPLTitle = unlessBatch $ do
rw <- getRW
io (setTitle (mkTitle rw))
eUpdateTitle rw
-- | Set the function that will be called when updating the title
setUpdateREPLTitle :: REPL () -> REPL ()
setUpdateREPLTitle m = modifyRW_ (\rw -> rw { eUpdateTitle = m })
-- | Set the REPL's string-printer
setPutStr :: (String -> IO ()) -> REPL ()

View File

@ -6,7 +6,7 @@
-- Stability : provisional
-- Portability : portable
module REPL.Trie where
module Cryptol.REPL.Trie where
import Cryptol.Utils.Panic (panic)
import qualified Data.Map as Map