mirror of
https://github.com/uqbar-dao/nectar.git
synced 2024-12-21 07:31:34 +03:00
bdf7fb171b
Conflicts: Cargo.lock Cargo.toml kinode/Cargo.toml kinode/packages/app-store/ui/src/components/ManifestDisplay.tsx kinode/packages/app-store/ui/src/components/NotificationBay.tsx kinode/packages/app-store/ui/src/pages/MyAppsPage.tsx kinode/packages/app-store/ui/src/pages/MyDownloadsPage.tsx kinode/packages/app_store/ui/src/pages/MyDownloadsPage.tsx kinode/src/vfs.rs lib/Cargo.toml
95 lines
3.0 KiB
Python
Executable File
95 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import zipfile
|
|
|
|
def get_system_info():
|
|
# Get OS and architecture information
|
|
os_info = subprocess.run(["uname"], capture_output=True, text=True, check=True).stdout.strip().lower()
|
|
arch_info = subprocess.run(["uname", "-m"], capture_output=True, text=True, check=True).stdout.strip().lower()
|
|
|
|
if os_info == "linux":
|
|
os_info = "unknown-linux-gnu"
|
|
elif os_info == "darwin":
|
|
os_info = "apple-darwin"
|
|
|
|
if arch_info == "arm":
|
|
arch_info = "aarch64"
|
|
|
|
return arch_info, os_info
|
|
|
|
def build_and_move(feature, tmp_dir, architecture, os_name):
|
|
print("\n" + "=" * 50)
|
|
print(f"BUILDING {feature if feature else 'default'}")
|
|
print("=" * 50 + "\n")
|
|
|
|
zip_prefix = f"kinode-{architecture}-{os_name}"
|
|
release_env = os.environ.copy()
|
|
release_env["CARGO_PROFILE_RELEASE_LTO"] = "fat"
|
|
release_env["CARGO_PROFILE_RELEASE_CODEGEN_UNITS"] = "1"
|
|
release_env["CARGO_PROFILE_RELEASE_STRIP"] = "symbols"
|
|
if feature:
|
|
release_env["PATH_TO_PACKAGES_ZIP"] = f"../target/packages-{feature}.zip"
|
|
subprocess.run(
|
|
["cargo", "run", "-p", "build-packages", "--", "--features", feature],
|
|
check=True,
|
|
#stdout=subprocess.PIPE,
|
|
#stderr=subprocess.PIPE,
|
|
)
|
|
subprocess.run(
|
|
["cargo", "build", "--release", "-p", "kinode", "--features", feature],
|
|
check=True,
|
|
env=release_env,
|
|
#stdout=subprocess.PIPE,
|
|
#stderr=subprocess.PIPE,
|
|
)
|
|
zip_name = f"{zip_prefix}-{feature}.zip"
|
|
else:
|
|
subprocess.run(["cargo", "run", "-p", "build-packages"], check=True)
|
|
subprocess.run(
|
|
["cargo", "build", "--release", "-p", "kinode"],
|
|
check=True,
|
|
env=release_env,
|
|
)
|
|
zip_name = f"{zip_prefix}.zip"
|
|
|
|
# Move and rename the binary
|
|
binary_name = "kinode"
|
|
source_path = f"target/release/{binary_name}"
|
|
dest_path = os.path.join(tmp_dir, binary_name)
|
|
shutil.move(source_path, dest_path)
|
|
os.chmod(dest_path, 0o644)
|
|
|
|
# Create a zip archive of the binary
|
|
zip_path = os.path.join(tmp_dir, zip_name)
|
|
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
|
|
zipf.write(dest_path, os.path.basename(dest_path))
|
|
|
|
# Remove the original binary
|
|
os.remove(dest_path)
|
|
|
|
def main():
|
|
# Get system info
|
|
architecture, os_name = get_system_info()
|
|
|
|
# Modify the temporary directory path
|
|
tmp_dir = "/tmp/kinode-release"
|
|
if os.path.exists(tmp_dir):
|
|
shutil.rmtree(tmp_dir)
|
|
os.makedirs(tmp_dir)
|
|
|
|
# Features to compile with; add more features as needed
|
|
features = ["", "simulation-mode"]
|
|
|
|
# Loop through the features and build
|
|
for feature in features:
|
|
build_and_move(feature, tmp_dir, architecture, os_name)
|
|
|
|
linked_dir = f"\033]8;;file://{tmp_dir}\033\\{tmp_dir}\033]8;;\033\\"
|
|
print(f"Build and move process completed.\nFind release in {linked_dir}.")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|