Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
5 changes: 1 addition & 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,7 @@

kclvm_PANIC_INFO_KEY = "__kcl_PanicInfo__"


_exe_root = os.path.dirname(os.environ.get("KCLVM_CLI_BIN_PATH") or sys.executable)
_cli_dll = None


Expand All @@ -32,15 +32,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!!!"
59 changes: 10 additions & 49 deletions internal/kclvm_py/scripts/build-kclvm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,59 +4,20 @@
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/kcl-plugin" $kclvm_install_dir/bin/
cp "$topdir/internal/kclvm_py/scripts/cli/kcl-doc" $kclvm_install_dir/bin/
Expand All @@ -72,15 +33,15 @@ 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
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

# Get site-packages.
chmod +x $topdir/internal/kclvm_py/scripts/kcllib-install.sh
$topdir/internal/kclvm_py/scripts/kcllib-install.sh
#chmod +x $topdir/internal/kclvm_py/scripts/kcllib-install.sh
#$topdir/internal/kclvm_py/scripts/kcllib-install.sh

# Install plugins
cp -rf $topdir/plugins $kclvm_install_dir/
Expand Down
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 "$@"
Loading