OILS / demo / shedskin.sh View on Github | oilshell.org

71 lines, 24 significant
1#!/usr/bin/env bash
2#
3# Usage:
4# ./shedskin.sh <function name>
5
6set -o nounset
7set -o pipefail
8set -o errexit
9
10# Problems
11# - loading pickle for metadata. It has to dynamically look up classes.
12# - it won't compile the pickle module due to its use of marshal!
13# - TODO: we don't need metadata at all?
14
15# Fixed
16# - import posix removed in runtime.py
17# - _CheckType uses AttributeError: Shed Skin doesn't like it
18
19# Unfortunately the ShedSkin compiler crashes after 17 seconds with this error!
20#
21# ts = typestrnew(gx, types, cplusplus, node, check_extmod, depth, check_ret, var, tuple_check, mv=mv)
22# File "/usr/lib/python2.7/dist-packages/shedskin/typestr.py", line 193, in typestrnew
23# elif not node or infer.inode(gx, node).mv.module.builtin:
24# AttributeError: 'NoneType' object has no attribute 'module'
25#
26# real 0m17.210s
27# user 0m17.083s
28# sys 0m0.084s
29
30
31# 0.9.4 was released in 2015. Supposedly fixed in git!
32#
33# https://github.com/shedskin/shedskin/issues/203
34
35install-latest() {
36 # NOTE: I manually transcribed what I did. Could use virtualenv?
37 pushd ~/git/languages/shedskin
38 python setup.py build
39 sudo python setup.py install
40}
41
42make-tree() {
43 local out=_tmp/shedskin
44 mkdir -p $out
45 #cp -v asdl/{arith_parse.py,tdop.py} _devbuild/gen/demo_asdl.py $out
46
47 # dependencies of generated code
48 # unpickle probably won't work
49 cp -v asdl/{const.py,runtime.py} $out
50}
51
52run-python() {
53 pushd demo/shedskin
54 ./arith_parse.py '1+2'
55}
56
57# With latest, this generates C++ code, but it doesn't compile.
58#
59# TODO: Try something based on tdop.py that is a single module? There are too
60# many modules here.
61
62compile() {
63 pushd demo/shedskin
64 time shedskin arith_parse
65}
66
67count-output() {
68 wc -l demo/shedskin/*.{cpp,hpp} Makefile
69}
70
71"$@"