Compare commits

..
1 Commits
Author SHA1 Message Date
sisungo 4f06471aa2 feat: support hard links when packaging
Signed-off-by: sisungo <[email protected]>
2026-07-07 12:06:00 +08:00
2 changed files with 13 additions and 12 deletions
+12 -1
View File
@@ -1,6 +1,7 @@
import json
import os
import shutil
import subprocess
import sys
if sys.version_info >= (3, 14):
@@ -45,4 +46,14 @@ class PkgComposer:
shutil.copy2(src, f"{self.workdir}/bundle/{dst}", follow_symlinks=False)
def add_dir(self, src: str, dst: str, merge: bool = False):
shutil.copytree(src, f"{self.workdir}/bundle/{dst}", dirs_exist_ok=merge)
target = f"{self.workdir}/bundle/{dst}"
if not os.path.exists(src):
raise FileNotFoundError(f"Source directory not found: {src}")
os.makedirs(os.path.dirname(target), exist_ok=True)
if merge and os.path.exists(target) and os.path.isdir(target):
cmd = ["cp", "-a", f"{src}/.", target]
else:
cmd = ["cp", "-a", src, target]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
raise RuntimeError(f"cp command failed: {result.stderr}")
+1 -11
View File
@@ -12,18 +12,8 @@ source_url(f"https://sourceware.org/pub/bzip2/bzip2-{upstream_version}.tar.gz")
def build():
cpp.make(["-f", "Makefile-libbz2_so"])
try:
shutil.rmtree("../cpp_install")
except Exception:
pass
cpp.make_install(["PREFIX=../cpp_install"], chdir=False)
shutil.copy2(
f"libbz2.so.{upstream_version}",
f"../cpp_install/lib/libbz2.so.{upstream_version}",
)
os.symlink(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so.1.0")
os.symlink(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so.1")
os.symlink(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so")
shutil.copy2(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so")
os.chdir("../cpp_install")