@@ -7,27 +7,62 @@ NCPU="$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)"
77OCAML_VERSION=" 4.13.1"
88SPARROW_OPAM_SWITCH=sparrow-" $OCAML_VERSION " +flambda
99SPARROW_OPAM_SWITCH_OPTION=" --package=ocaml-variants.${OCAML_VERSION} +options,ocaml-option-flambda"
10- opam init --reinit --bare --no-setup
1110
12- switch_exists=no
13- for installed_switch in $( opam switch list --short) ; do
14- if [[ " $installed_switch " == " $SPARROW_OPAM_SWITCH " ]]; then
15- switch_exists=yes
16- break
17- fi
11+ USER_OPAM_SWITCH=no
12+
13+ function usage() {
14+ echo " Usage: $0 [options]"
15+ echo
16+ echo " options:"
17+ echo " -h,--help show this message"
18+ echo " --user-opam-switch use the current opam switch to install haechi (default: $OPAM_SWITCH )"
19+ echo
20+ echo " examples:"
21+ echo " $0 # build haechi with default options"
22+ echo " $0 --user-opam-switch # build haechi in the current opam switch (e.g., for Github CI)"
23+ }
24+
25+ while [[ $# -gt 0 ]]; do
26+ opt_key=" $1 "
27+ case $opt_key in
28+ --user-opam-switch)
29+ USER_OPAM_SWITCH=yes
30+ shift
31+ continue
32+ ;;
33+ esac
1834done
19- if [ " $switch_exists " = " no" ]; then
20- opam switch create $SPARROW_OPAM_SWITCH_OPTION $SPARROW_OPAM_SWITCH
21- else
22- opam switch $SPARROW_OPAM_SWITCH
35+
36+ function setup_opam() {
37+ opam init --reinit --bare --no-setup
38+
39+ switch_exists=no
40+ for installed_switch in $( opam switch list --short) ; do
41+ if [[ " $installed_switch " == " $SPARROW_OPAM_SWITCH " ]]; then
42+ switch_exists=yes
43+ break
44+ fi
45+ done
46+ if [ " $switch_exists " = " no" ]; then
47+ opam switch create $SPARROW_OPAM_SWITCH_OPTION $SPARROW_OPAM_SWITCH
48+ else
49+ opam switch $SPARROW_OPAM_SWITCH
50+ fi
51+
52+ eval $( SHELL=bash opam config env --switch=$SPARROW_OPAM_SWITCH )
53+ }
54+
55+ if [ " $USER_OPAM_SWITCH " == " no" ]; then
56+ setup_opam
2357fi
2458
25- eval $( SHELL=bash opam config env --switch=$SPARROW_OPAM_SWITCH )
2659echo -e " \e[31m[NOTE]\e[0m If you are not a sudo user, press Ctrl+D and skip installing system libraries. Contact the sysadmin, if they are not installed."
27- opam install apron clangml || echo " Skip system library install"
60+ opam install apron || echo " Skip system library install"
2861opam pin add prosys-cil https://github.com/prosyslab/cil.git -n
2962opam pin add claml https://github.com/prosyslab/claml.git -n
3063opam pin add sparrow . -n
3164opam install -j $NCPU sparrow --deps-only
3265opam pin remove sparrow
66+ # development packages
67+ opam install -j $NCPU ocamlformat.0.24.1 merlin ocp-index ocp-indent ocaml-lsp-server
3368make
0 commit comments