Skip to content

Commit ec71c93

Browse files
authored
Merge pull request #43 from kcl-lang/fix-kcl-lib-release-folder
fix: kcl lib release folder
2 parents 9fbba3e + f8fc748 commit ec71c93

File tree

7 files changed

+70
-31
lines changed

7 files changed

+70
-31
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kcl-lang"
3-
version = "0.8.0-alpha.4"
3+
version = "0.8.0-alpha.5"
44
edition = "2021"
55
readme = "README.md"
66
documentation = "kcl-lang.io"

install.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"runtime"
99
)
1010

11-
const KCLVM_VERSION = "v0.8.0-alpha.4"
11+
const KCLVM_VERSION = "v0.8.0-alpha.5"
1212

1313
func findPath(name string) string {
1414
if path, err := exec.LookPath(name); err == nil {

java/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.kcl</groupId>
88
<artifactId>kcl-lib</artifactId>
9-
<version>0.8.0-alpha.4</version>
9+
<version>0.8.0-alpha.5</version>
1010
<name>KCL Arifact Library for Java</name>
1111
<description>
1212
KCL is an open-source constraint-based record and functional language mainly

python/kcl_lib/api/service.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
from kcl_lib.bootstrap import (
66
KCLVM_CLI_INSTALL_PATH_ENV_VAR,
77
KCLVM_CLI_BIN_PATH_ENV_VAR,
8+
KCLVM_CLI_USE_RELEASE_ENV_VAR,
89
lib_full_name,
910
install_kclvm,
1011
)
11-
from kcl_lib.bootstrap.artifact import lib_path
12+
from kcl_lib.bootstrap.artifact import lib_path, LIB_ROOT
1213
from .spec_pb2 import *
1314
from ctypes import c_char_p, c_void_p
1415
from google.protobuf import message as _message
@@ -103,13 +104,19 @@ def __init__(self):
103104
self._dir = tempfile.TemporaryDirectory()
104105
env_path = os.environ.get(KCLVM_CLI_BIN_PATH_ENV_VAR)
105106
env_install_path = os.environ.get(KCLVM_CLI_INSTALL_PATH_ENV_VAR)
107+
env_use_release = os.environ.get(KCLVM_CLI_USE_RELEASE_ENV_VAR)
106108
if env_path:
107109
self.lib = ctypes.CDLL(os.path.join(env_path, lib_full_name()))
108110
elif env_install_path:
109111
install_kclvm(env_install_path)
110112
self.lib = ctypes.CDLL(
111113
os.path.join(env_install_path, "bin", lib_full_name())
112114
)
115+
elif env_use_release:
116+
# The release lib is located at "kcl_lib/lib/"
117+
lib_path = LIB_ROOT.joinpath("lib")
118+
os.environ[KCLVM_CLI_BIN_PATH_ENV_VAR] = str(lib_path)
119+
self.lib = ctypes.CDLL(str(lib_path.joinpath(lib_full_name())))
113120
else:
114121
# Install temp path.
115122
install_kclvm(self._dir.name)

python/kcl_lib/bootstrap/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
import platform
44
from pathlib import Path
55

6-
KCLVM_VERSION = "0.8.0-alpha.4" # You should replace this with actual version
6+
KCLVM_VERSION = "0.8.0-alpha.5" # You should replace this with actual version
77
KCLVM_CLI_BIN_PATH_ENV_VAR = "KCLVM_CLI_BIN_PATH"
88
KCLVM_CLI_INSTALL_PATH_ENV_VAR = "KCLVM_CLI_INSTALL_PATH"
9+
KCLVM_CLI_USE_RELEASE_ENV_VAR = "KCLVM_CLI_USE_RELEASE"
910
LIB_NAME = "kclvm_cli_cdylib"
1011

1112

python/kcl_lib/bootstrap/artifact.py

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,59 +19,77 @@ def is_amd64_arch():
1919

2020

2121
if sys.platform == "darwin":
22-
if is_amd64_arch():
23-
with open(f"{LIB_ROOT}/lib/darwin-amd64/libkclvm_cli_cdylib.dylib", "rb") as f:
24-
DARWIN_AMD64_CLI_LIB = f.read()
25-
else:
26-
with open(f"{LIB_ROOT}/lib/darwin-arm64/libkclvm_cli_cdylib.dylib", "rb") as f:
27-
DARWIN_ARM64_CLI_LIB = f.read()
2822

2923
def cli_lib():
24+
if is_amd64_arch():
25+
with open(
26+
f"{LIB_ROOT}/lib/darwin-amd64/libkclvm_cli_cdylib.dylib", "rb"
27+
) as f:
28+
DARWIN_AMD64_CLI_LIB = f.read()
29+
else:
30+
with open(
31+
f"{LIB_ROOT}/lib/darwin-arm64/libkclvm_cli_cdylib.dylib", "rb"
32+
) as f:
33+
DARWIN_ARM64_CLI_LIB = f.read()
3034
return DARWIN_AMD64_CLI_LIB if is_amd64_arch() else DARWIN_ARM64_CLI_LIB
3135

3236
def lib_path() -> str:
3337
if is_amd64_arch():
3438
return str(LIB_ROOT.joinpath("lib").joinpath("darwin-amd64"))
3539
return str(LIB_ROOT.joinpath("lib").joinpath("darwin-arm64"))
3640

41+
def lib_name() -> str:
42+
return "libkclvm_cli_cdylib.dylib"
43+
3744
elif sys.platform.startswith("linux"):
38-
if is_amd64_arch():
39-
with open(f"{LIB_ROOT}/lib/linux-amd64/libkclvm_cli_cdylib.so", "rb") as f:
40-
LINUX_AMD64_CLI_LIB = f.read()
41-
else:
42-
with open(f"{LIB_ROOT}/lib/linux-arm64/libkclvm_cli_cdylib.so", "rb") as f:
43-
LINUX_ARM64_CLI_LIB = f.read()
4445

4546
def cli_lib():
47+
if is_amd64_arch():
48+
with open(f"{LIB_ROOT}/lib/linux-amd64/libkclvm_cli_cdylib.so", "rb") as f:
49+
LINUX_AMD64_CLI_LIB = f.read()
50+
else:
51+
with open(f"{LIB_ROOT}/lib/linux-arm64/libkclvm_cli_cdylib.so", "rb") as f:
52+
LINUX_ARM64_CLI_LIB = f.read()
4653
return LINUX_AMD64_CLI_LIB if is_amd64_arch() else LINUX_ARM64_CLI_LIB
4754

4855
def lib_path() -> str:
4956
if is_amd64_arch():
5057
return str(LIB_ROOT.joinpath("lib").joinpath("linux-amd64"))
5158
return str(LIB_ROOT.joinpath("lib").joinpath("linux-arm64"))
5259

60+
def lib_name() -> str:
61+
return "libkclvm_cli_cdylib.so"
62+
5363
elif sys.platform == "win32":
54-
if is_amd64_arch():
55-
with open(f"{LIB_ROOT}/lib/windows-amd64/kclvm_cli_cdylib.dll", "rb") as f:
56-
WINDOWS_AMD64_CLI_LIB = f.read()
57-
with open(f"{LIB_ROOT}/lib/windows-amd64/kclvm_cli_cdylib.lib", "rb") as f:
58-
WINDOWS_AMD64_EXPORT_LIB = f.read()
59-
else:
60-
with open(f"{LIB_ROOT}/lib/windows-arm64/kclvm_cli_cdylib.dll", "rb") as f:
61-
WINDOWS_ARM64_CLI_LIB = f.read()
62-
with open(f"{LIB_ROOT}/lib/windows-arm64/kclvm_cli_cdylib.lib", "rb") as f:
63-
WINDOWS_ARM64_EXPORT_LIB = f.read()
6464

6565
def cli_lib():
66+
if is_amd64_arch():
67+
with open(f"{LIB_ROOT}/lib/windows-amd64/kclvm_cli_cdylib.dll", "rb") as f:
68+
WINDOWS_AMD64_CLI_LIB = f.read()
69+
else:
70+
with open(f"{LIB_ROOT}/lib/windows-arm64/kclvm_cli_cdylib.dll", "rb") as f:
71+
WINDOWS_ARM64_CLI_LIB = f.read()
6672
return WINDOWS_AMD64_CLI_LIB if is_amd64_arch() else WINDOWS_ARM64_CLI_LIB
6773

6874
def export_lib():
75+
if is_amd64_arch():
76+
with open(f"{LIB_ROOT}/lib/windows-amd64/kclvm_cli_cdylib.lib", "rb") as f:
77+
WINDOWS_AMD64_EXPORT_LIB = f.read()
78+
else:
79+
with open(f"{LIB_ROOT}/lib/windows-arm64/kclvm_cli_cdylib.lib", "rb") as f:
80+
WINDOWS_ARM64_EXPORT_LIB = f.read()
6981
return WINDOWS_AMD64_EXPORT_LIB if is_amd64_arch() else WINDOWS_ARM64_EXPORT_LIB
7082

7183
def lib_path() -> str:
7284
if is_amd64_arch():
7385
return str(LIB_ROOT.joinpath("lib").joinpath("windows-amd64"))
7486
return str(LIB_ROOT.joinpath("lib").joinpath("windows-arm64"))
7587

88+
def lib_name() -> str:
89+
return "kclvm_cli_cdylib.dll"
90+
91+
def export_lib_name() -> str:
92+
return "kclvm_cli_cdylib.lib"
93+
7694
else:
7795
raise f"Unsupported platform {sys.platform}, expected win32, linux or darwin platform"

python/setup.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ def is_amd64_arch():
6262
def cli_lib():
6363
return DARWIN_AMD64_CLI_LIB if is_amd64_arch() else DARWIN_ARM64_CLI_LIB
6464

65+
def lib_name():
66+
return "libkclvm_cli_cdylib.dylib"
67+
6568
elif PLATFORM.startswith("linux"):
6669
if is_amd64_arch():
6770
LINUX_AMD64_CLI_LIB = "lib/linux-amd64/libkclvm_cli_cdylib.so"
@@ -71,6 +74,9 @@ def cli_lib():
7174
def cli_lib():
7275
return LINUX_AMD64_CLI_LIB if is_amd64_arch() else LINUX_ARM64_CLI_LIB
7376

77+
def lib_name():
78+
return "libkclvm_cli_cdylib.so"
79+
7480
elif PLATFORM == "win32":
7581
if is_amd64_arch():
7682
WINDOWS_AMD64_CLI_LIB = "lib/windows-amd64/kclvm_cli_cdylib.dll"
@@ -85,6 +91,12 @@ def cli_lib():
8591
def export_lib():
8692
return WINDOWS_AMD64_EXPORT_LIB if is_amd64_arch() else WINDOWS_ARM64_EXPORT_LIB
8793

94+
def lib_name():
95+
return "kclvm_cli_cdylib.dll"
96+
97+
def export_lib_name():
98+
return "kclvm_cli_cdylib.lib"
99+
88100
else:
89101
raise f"Unsupported platform {PLATFORM}, expected win32, linux or darwin platform"
90102

@@ -95,14 +107,15 @@ def copyfile(src: pathlib.Path, dst: pathlib.Path) -> str:
95107
return str(dst.relative_to(pathlib.Path(__file__).parent))
96108

97109

110+
# Copy libs to the kcl_lib/lib folder
98111
def copy_libs():
99112
source_dir = pathlib.Path(__file__).parent.parent
100-
target_dir = pathlib.Path(__file__).parent.joinpath("kcl_lib")
113+
target_dir = pathlib.Path(__file__).parent.joinpath("kcl_lib").joinpath("lib")
101114
data_files = []
102-
data_files.append(copyfile(source_dir / cli_lib(), target_dir / cli_lib()))
115+
data_files.append(copyfile(source_dir / cli_lib(), target_dir / lib_name()))
103116
if PLATFORM in ["windows"]:
104117
data_files.append(
105-
copyfile(source_dir / export_lib(), target_dir / export_lib())
118+
copyfile(source_dir / export_lib(), target_dir / export_lib_name())
106119
)
107120
return data_files
108121

@@ -121,7 +134,7 @@ def copy_libs():
121134
setup(
122135
name="kcl_lib",
123136
author="KCL Authors",
124-
version="0.8.0-alpha.4",
137+
version="0.8.0-alpha.5",
125138
license="Apache License 2.0",
126139
python_requires=">=3.7",
127140
description="KCL Artifact Library for Python",

0 commit comments

Comments
 (0)