Skip to content

Commit

Permalink
Merge 1be355f into 0066ff5
Browse files Browse the repository at this point in the history
  • Loading branch information
Peefy committed Nov 22, 2022
2 parents 0066ff5 + 1be355f commit 219630f
Show file tree
Hide file tree
Showing 24 changed files with 275 additions and 192 deletions.
2 changes: 1 addition & 1 deletion internal/kclvm_py/api/version/checksum.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9e3303edaba484df6004620bf7b28b98
c5339e572207211e46477825e8aca903
6 changes: 2 additions & 4 deletions internal/kclvm_py/program/exec/kclvm_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@

kclvm_PANIC_INFO_KEY = "__kcl_PanicInfo__"


# Using kclvm rust cli PATH or current exec path.
_exe_root = os.path.dirname(os.environ.get("KCLVM_CLI_BIN_PATH") or sys.executable)
_cli_dll = None


Expand All @@ -32,15 +33,12 @@ def init_cli_dll():
return

if platform.system() == "Darwin":
_exe_root = os.path.dirname(os.path.dirname(sys.executable))
_cli_dll_path = f"{_exe_root}/bin/libkclvm_cli_cdylib.dylib"
_cli_dll = CDLL(_cli_dll_path)
elif platform.system() == "Linux":
_exe_root = os.path.dirname(os.path.dirname(sys.executable))
_cli_dll_path = f"{_exe_root}/bin/libkclvm_cli_cdylib.so"
_cli_dll = CDLL(_cli_dll_path)
elif platform.system() == "Windows":
_exe_root = os.path.dirname(sys.executable)
_cli_dll_path = f"{_exe_root}/kclvm_cli_cdylib.dll"
_cli_dll = CDLL(_cli_dll_path)
else:
Expand Down
72 changes: 1 addition & 71 deletions internal/kclvm_py/scripts/build-cpython.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,76 +10,6 @@ prepare_dirs () {
mkdir -p "$cpython_install_dir"
}

# Switch configuration options.
config_option="Default"
if [ "$os" != "" ]; then
config_option=$os
fi

# python version
py_ver_major="3"
py_ver_minor="7"
py_ver_micro="6"

for config in "$config_option"
do
case $config in
"Default" | "centos")
config_envs="LANG=C.UTF-8"
config_options="--enable-optimizations --with-ssl"
echo "$REPLY: The configuration is $config: config_envs=$config_envs config_options=$config_options"
break
;;
"Darwin")
if [ "$sslpath" == "" ]; then
sslpath=$(brew --prefix openssl@1.1)
fi

py_ver_major="3"
py_ver_minor="9"
py_ver_micro="12"

config_envs="LANG=C.UTF-8"
config_options="--enable-optimizations --with-openssl=$sslpath --with-ssl-default-suites=python"
echo "$REPLY: The configuration is $config: config_envs=$config_envs config_options=$config_options"
break
;;
"ubuntu" | "debian" | "Ubuntu" |"Debian" | "Static-Debian" | "Cood1-Debian" | "Cood1Shared-Debian")
config_envs="CFLAGS=-Wno-coverage-mismatch"
config_options="--enable-optimizations --with-ssl"
echo "$REPLY: The configuration is $config: config_envs=$config_envs config_options=$config_options"
break
;;
*) echo "Invalid config option $REPLY:$config"
exit 1
break
;;
esac
done

# py_ver_str="$(python3 -c 'import os; print(os.path.basename(os.path.dirname(os.__file__)))')"
py_ver_str="${py_ver_major}.${py_ver_minor}.${py_ver_micro}"

# wget python
mkdir -p $topdir/_build/3rdparty
wget -P $topdir/_build/3rdparty "https://www.python.org/ftp/python/${py_ver_str}/Python-${py_ver_str}.tgz"
tar zxvf $topdir/_build/3rdparty/Python-${py_ver_str}.tgz -C $topdir/_build/3rdparty

prepare_dirs
prefix_option="--prefix=$cpython_install_dir"
cpython_source_dir="$topdir/_build/3rdparty/Python-${py_ver_str}"

# Perform the configuration/make/make install process.
set -x
cd $cpython_build_dir
eval $config_envs $cpython_source_dir/configure $prefix_option $config_options "--enable-shared"
eval $config_envs $cpython_source_dir/configure $prefix_option $config_options
# The make -j command may fail on some OS.
# make -j "$(nproc)"
make -j8 build_all
make -j8 altinstall
set +x

# Print the summary.
echo "================ Summary ================"
echo " CPython is built into $cpython_build_dir"
echo " CPython is ignored!!!"
64 changes: 13 additions & 51 deletions internal/kclvm_py/scripts/build-kclvm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,83 +4,42 @@
set -e

prepare_dirs () {
cpython_build_dir="$topdir/_build/dist/$os/cpython"
kclvm_packages_dir="$topdir/_build/packages"
kclvm_install_dir="$topdir/_build/dist/$os/kclvm"
mkdir -p "$kclvm_install_dir"
mkdir -p "$kclvm_packages_dir"
mkdir -p "$kclvm_install_dir/bin"
mkdir -p "$kclvm_install_dir/lib/site-packages"
mkdir -p "$kclvm_install_dir/include"
}

prepare_dirs
kclvm_source_dir="$topdir/internal/kclvm_py"

# python exe name
py_exe_name="python3.7"
if [ -d "${cpython_build_dir}/lib/python3.9" ]; then
py_exe_name="python3.9"
fi

# py_lib_basename: python3.x
py_lib_basename="python3.7"
if [ -d "${cpython_build_dir}/lib/python3.9" ]; then
py_lib_basename="python3.9"
fi

# Perform the build process.
set -x

# Copy files from CPython.
cd $kclvm_install_dir
mkdir -p bin
mkdir -p lib
cp $cpython_build_dir/bin/${py_exe_name} $kclvm_install_dir/bin/kclvm
cp -r $cpython_build_dir/lib/${py_lib_basename} $kclvm_install_dir/lib/

# Darwin dylib
if [ -e $cpython_build_dir/lib/lib${py_lib_basename}.dylib ]; then
touch $kclvm_install_dir/lib/lib${py_lib_basename}.dylib
rm $kclvm_install_dir/lib/lib${py_lib_basename}.dylib
mv $cpython_build_dir/lib/lib${py_lib_basename}.dylib $kclvm_install_dir/lib/lib${py_lib_basename}.dylib
fi
# Linux so
if [ -e $cpython_build_dir/lib/lib${py_lib_basename}m.so.1.0 ]; then
touch $kclvm_install_dir/lib/lib${py_lib_basename}.so
rm $kclvm_install_dir/lib/lib${py_lib_basename}.so
mv $cpython_build_dir/lib/lib${py_lib_basename}m.so.1.0 $kclvm_install_dir/lib/lib${py_lib_basename}.so
fi
# Windows dll
if [ -e $cpython_build_dir/lib/lib${py_lib_basename}.dll ]; then
touch $kclvm_install_dir/lib/lib${py_lib_basename}.dll
rm $kclvm_install_dir/lib/lib${py_lib_basename}.dll
mv $cpython_build_dir/lib/lib${py_lib_basename}.dll $kclvm_install_dir/lib/lib${py_lib_basename}.dll
fi
cp -r $cpython_build_dir/include $kclvm_install_dir/

# Copy KCLVM.
cp "$topdir/internal/kclvm_py/scripts/requirements.txt" $kclvm_install_dir/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kclvm" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-plugin" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-doc" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-test" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-lint" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-fmt" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-vet" $kclvm_install_dir/bin/
chmod +x $kclvm_install_dir/bin/kcl
chmod +x $kclvm_install_dir/bin/kclvm
chmod +x $kclvm_install_dir/bin/kcl-plugin
chmod +x $kclvm_install_dir/bin/kcl-doc
chmod +x $kclvm_install_dir/bin/kcl-test
chmod +x $kclvm_install_dir/bin/kcl-lint
chmod +x $kclvm_install_dir/bin/kcl-fmt
chmod +x $kclvm_install_dir/bin/kcl-vet

if [ -d $kclvm_install_dir/lib/${py_lib_basename}/kclvm ]; then
rm -rf $kclvm_install_dir/lib/${py_lib_basename}/kclvm
if [ -d $kclvm_install_dir/lib/site-packages/kclvm ]; then
rm -rf $kclvm_install_dir/lib/site-packages/kclvm
fi
cp -r $kclvm_source_dir $kclvm_install_dir/lib/${py_lib_basename}
mv $kclvm_install_dir/lib/${py_lib_basename}/kclvm_py $kclvm_install_dir/lib/${py_lib_basename}/kclvm

# Get site-packages.
chmod +x $topdir/internal/kclvm_py/scripts/kcllib-install.sh
$topdir/internal/kclvm_py/scripts/kcllib-install.sh
cp -r $kclvm_source_dir $kclvm_install_dir/lib/site-packages
mv $kclvm_install_dir/lib/site-packages/kclvm_py $kclvm_install_dir/lib/site-packages/kclvm

# Install plugins
cp -rf $topdir/plugins $kclvm_install_dir/
Expand All @@ -90,3 +49,6 @@ set +x
# Print the summary.
echo "================ Summary ================"
echo " KCLVM is installed into $kclvm_install_dir"

# Run KCL CLI to install dependencies.
$kclvm_install_dir/bin/kcl
33 changes: 30 additions & 3 deletions internal/kclvm_py/scripts/cli/kcl
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
#!/bin/sh

kclvm_path=$(cd `dirname $0`; pwd)/kclvm
export PATHONPATH=''
$kclvm_path -m kclvm "$@"
# Stop on error.
set -e

# python3 path
python3_bin=`which python3`
kclvm_install_dir=$(cd `dirname $0`/..; pwd)
pip_install_done_file="$kclvm_install_dir/lib/site-packages/kclvm.requirements.done.txt"

# check python3
if [ -z "$python3_bin" ]; then
echo "python3 not found!"
exit 1
fi

# once: pip install
if [ ! -f $pip_install_done_file ]; then
# check python3 version
$python3_bin -c "import sys; sys.exit(0) if sys.version_info>=(3,7,3) else (print('please install python 3.7.3+') or sys.exit(1))"
# pip install requirements.txt
install_list=$kclvm_install_dir/requirements.txt
target_dir=$kclvm_install_dir/lib/site-packages

# kclvm pip install all libs
$python3_bin -m pip install --target=$target_dir -r $install_list
echo 'done' > $pip_install_done_file
fi

export PYTHONPATH=$kclvm_install_dir/lib/site-packages
export KCLVM_CLI_BIN_PATH=$kclvm_install_dir/bin
$python3_bin -m kclvm "$@"
33 changes: 30 additions & 3 deletions internal/kclvm_py/scripts/cli/kcl-doc
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
#!/bin/sh

kclvm_path=$(cd `dirname $0`; pwd)/kclvm
export PATHONPATH=''
$kclvm_path -m kclvm.tools.docs "$@"
# Stop on error.
set -e

# python3 path
python3_bin=`which python3`
kclvm_install_dir=$(cd `dirname $0`/..; pwd)
pip_install_done_file="$kclvm_install_dir/lib/site-packages/kclvm.requirements.done.txt"

# check python3
if [ -z "$python3_bin" ]; then
echo "python3 not found!"
exit 1
fi

# once: pip install
if [ ! -f $pip_install_done_file ]; then
# check python3 version
$python3_bin -c "import sys; sys.exit(0) if sys.version_info>=(3,7,3) else (print('please install python 3.7.3+') or sys.exit(1))"
# pip install requirements.txt
install_list=$kclvm_install_dir/requirements.txt
target_dir=$kclvm_install_dir/lib/site-packages

# kclvm pip install all libs
$python3_bin -m pip install --target=$target_dir -r $install_list
echo 'done' > $pip_install_done_file
fi

export PYTHONPATH=$kclvm_install_dir/lib/site-packages
export KCLVM_CLI_BIN_PATH=$kclvm_install_dir/bin
$python3_bin -m kclvm.tools.docs "$@"
33 changes: 30 additions & 3 deletions internal/kclvm_py/scripts/cli/kcl-fmt
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
#!/bin/sh

kclvm_path=$(cd `dirname $0`; pwd)/kclvm
export PATHONPATH=''
$kclvm_path -m kclvm.tools.format "$@"
# Stop on error.
set -e

# python3 path
python3_bin=`which python3`
kclvm_install_dir=$(cd `dirname $0`/..; pwd)
pip_install_done_file="$kclvm_install_dir/lib/site-packages/kclvm.requirements.done.txt"

# check python3
if [ -z "$python3_bin" ]; then
echo "python3 not found!"
exit 1
fi

# once: pip install
if [ ! -f $pip_install_done_file ]; then
# check python3 version
$python3_bin -c "import sys; sys.exit(0) if sys.version_info>=(3,7,3) else (print('please install python 3.7.3+') or sys.exit(1))"
# pip install requirements.txt
install_list=$kclvm_install_dir/requirements.txt
target_dir=$kclvm_install_dir/lib/site-packages

# kclvm pip install all libs
$python3_bin -m pip install --target=$target_dir -r $install_list
echo 'done' > $pip_install_done_file
fi

export PYTHONPATH=$kclvm_install_dir/lib/site-packages
export KCLVM_CLI_BIN_PATH=$kclvm_install_dir/bin
$python3_bin -m kclvm.tools.format "$@"
34 changes: 31 additions & 3 deletions internal/kclvm_py/scripts/cli/kcl-lint
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
#!/bin/sh

kclvm_path=$(cd `dirname $0`; pwd)/kclvm
export PATHONPATH=''
$kclvm_path -m kclvm.tools.lint.lint "$@"
# Stop on error.
set -e

# python3 path
python3_bin=`which python3`
kclvm_install_dir=$(cd `dirname $0`/..; pwd)
pip_install_done_file="$kclvm_install_dir/lib/site-packages/kclvm.requirements.done.txt"

# check python3
if [ -z "$python3_bin" ]; then
echo "python3 not found!"
exit 1
fi

# once: pip install
if [ ! -f $pip_install_done_file ]; then
# check python3 version
$python3_bin -c "import sys; sys.exit(0) if sys.version_info>=(3,7,3) else (print('please install python 3.7.3+') or sys.exit(1))"
# pip install requirements.txt
install_list=$kclvm_install_dir/requirements.txt
target_dir=$kclvm_install_dir/lib/site-packages

# kclvm pip install all libs
$python3_bin -m pip install --target=$target_dir -r $install_list
echo 'done' > $pip_install_done_file
fi

export PYTHONPATH=$kclvm_install_dir/lib/site-packages
export KCLVM_CLI_BIN_PATH=$kclvm_install_dir/bin
$python3_bin -m kclvm.tools.lint "$@"

34 changes: 31 additions & 3 deletions internal/kclvm_py/scripts/cli/kcl-plugin
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
#!/bin/sh

kclvm_path=$(cd `dirname $0`; pwd)/kclvm
export PATHONPATH=''
$kclvm_path -m kclvm.tools.plugin "$@"
# Stop on error.
set -e

# python3 path
python3_bin=`which python3`
kclvm_install_dir=$(cd `dirname $0`/..; pwd)
pip_install_done_file="$kclvm_install_dir/lib/site-packages/kclvm.requirements.done.txt"

# check python3
if [ -z "$python3_bin" ]; then
echo "python3 not found!"
exit 1
fi

# once: pip install
if [ ! -f $pip_install_done_file ]; then
# check python3 version
$python3_bin -c "import sys; sys.exit(0) if sys.version_info>=(3,7,3) else (print('please install python 3.7.3+') or sys.exit(1))"
# pip install requirements.txt
install_list=$kclvm_install_dir/requirements.txt
target_dir=$kclvm_install_dir/lib/site-packages

# kclvm pip install all libs
$python3_bin -m pip install --target=$target_dir -r $install_list
echo 'done' > $pip_install_done_file
fi

export PYTHONPATH=$kclvm_install_dir/lib/site-packages
export KCLVM_CLI_BIN_PATH=$kclvm_install_dir/bin
$python3_bin -m kclvm.tools.plugin "$@"

2 changes: 1 addition & 1 deletion internal/kclvm_py/scripts/cli/kcl-test
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ if [[ ! -f $kcl_go_path ]]; then
echo "kcl-go not found, please check the installation"
exit 1
fi
export PATHONPATH=''
export PYTHONPATH=''
$kcl_go_path test "$@"

0 comments on commit 219630f

Please sign in to comment.