diff --git a/lib/cpp.py b/lib/cpp.py index 716f676..f6f4a9a 100644 --- a/lib/cpp.py +++ b/lib/cpp.py @@ -1,4 +1,5 @@ import os +import shutil import subprocess from lib.common import treedir @@ -32,11 +33,25 @@ def make(rem: list[str] = []): subprocess.run(["make", f"-j{os.cpu_count()}"] + rem, check=True) -def make_install(rem: list[str] | None = None, chdir: bool = True): +def make_install(rem: list[str] | None = None, chdir: bool = True, move: bool = True): default_rem = ["DESTDIR=" + os.getcwd() + "/../cpp_install"] + if rem is None: + try: + shutil.rmtree("../cpp_install") + except: + pass subprocess.run(["make", "install"] + (rem or default_rem), check=True) if rem is None and chdir: os.chdir("../cpp_install") + if chdir and move: + subprocess.run( + ["sh", "-c", "cp -r ./pkg/*@*/* . 2>/dev/null || true"], check=False + ) + subprocess.run( + ["sh", "-c", "cp -r ./usr/local/* . 2>/dev/null || true"], check=False + ) + subprocess.run(["sh", "-c", "cp -r ./usr/* . 2>/dev/null || true"], check=False) + subprocess.run(["rm", "-rf", "./pkg", "./usr"], check=False) def ninja(rem: list[str] = []): diff --git a/lib/make.py b/lib/make.py index 8f9dd06..a045423 100644 --- a/lib/make.py +++ b/lib/make.py @@ -72,6 +72,15 @@ def link(src: str, dst: str, default: bool = True): ] +def get_prefix(pkgname: str) -> str: + pkginfo = _pkginfo[pkgname] + if pkginfo.get(_key_arch_any): + pkgarch = "any" + else: + pkgarch = arch.get_target() + return f"/pkg/{pkgname}={pkginfo[_key_version]}@{pkgarch}" + + def supported_arch(s: list[str] | typing.Callable[[str], bool]): global _supported_arch if isinstance(s, list): diff --git a/packages/gnu-make/pkgbuild.py b/packages/gnu-make/pkgbuild.py index 64c9f0d..23a1464 100644 --- a/packages/gnu-make/pkgbuild.py +++ b/packages/gnu-make/pkgbuild.py @@ -6,7 +6,7 @@ source_url("https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz") def build(): - cpp.configure(["--prefix=/"]) + cpp.configure([f"--prefix={get_prefix('gnu-make')}"]) cpp.make() cpp.make_install() diff --git a/packages/iana-timezone/pkgbuild.py b/packages/iana-timezone/pkgbuild.py index ab711df..0c344e1 100644 --- a/packages/iana-timezone/pkgbuild.py +++ b/packages/iana-timezone/pkgbuild.py @@ -10,7 +10,6 @@ source_url("https://data.iana.org/time-zones/releases/tzdb-2026b.tar.lz") def build(): cpp.make() cpp.make_install() - os.chdir("usr") on_build(build) diff --git a/packages/icu4c/pkgbuild.py b/packages/icu4c/pkgbuild.py index 8d68867..d7ec55a 100644 --- a/packages/icu4c/pkgbuild.py +++ b/packages/icu4c/pkgbuild.py @@ -11,7 +11,16 @@ source_url( def build(): os.chdir("source") - cpp.configure(["--enable-plugins", "--prefix=/"]) + cpp.configure( + [ + "--enable-plugins", + "--prefix=/", + f"--bindir={get_prefix('icu4c')}/bin", + f"--sbindir={get_prefix('icu4c')}/sbin", + f"--libdir={get_prefix('libicu4c')}/lib", + f"--includedir={get_prefix('libicu4c-dev')}/include", + ] + ) cpp.make() cpp.make_install() diff --git a/packages/libarchive/pkgbuild.py b/packages/libarchive/pkgbuild.py index d08047c..1ffdc51 100644 --- a/packages/libarchive/pkgbuild.py +++ b/packages/libarchive/pkgbuild.py @@ -8,7 +8,14 @@ source_url( def build(): - cpp.configure(["--prefix=/"]) + cpp.configure( + [ + "--prefix=/", + f"--bindir={get_prefix('libarchive-tools')}/bin", + f"--libdir={get_prefix('libarchive')}/lib", + f"--includedir={get_prefix('libarchive-dev')}/include", + ] + ) cpp.make() cpp.make_install() diff --git a/packages/libffi/pkgbuild.py b/packages/libffi/pkgbuild.py index c289d9c..da118bf 100644 --- a/packages/libffi/pkgbuild.py +++ b/packages/libffi/pkgbuild.py @@ -11,6 +11,8 @@ def build(): cpp.configure( [ "--prefix=/", + f"--libdir={get_prefix('libffi')}/lib", + f"--includedir={get_prefix('libffi-dev')}/include", "--enable-portable-binary", "--disable-multi-os-directory", ] diff --git a/packages/mandoc/pkgbuild.py b/packages/mandoc/pkgbuild.py index b349929..c5e19d1 100644 --- a/packages/mandoc/pkgbuild.py +++ b/packages/mandoc/pkgbuild.py @@ -12,7 +12,6 @@ def build(): cpp.configure() cpp.make([f"CC={os.environ['CC']}"]) cpp.make_install() - os.chdir("usr/local") subprocess.run(["sh", "-c", "chmod +w bin/* sbin/*"], check=True) diff --git a/packages/ncurses/pkgbuild.py b/packages/ncurses/pkgbuild.py index 4d5960a..7ac48ea 100644 --- a/packages/ncurses/pkgbuild.py +++ b/packages/ncurses/pkgbuild.py @@ -11,6 +11,10 @@ def build(): cpp.configure( [ "--prefix=/", + f"--bindir={get_prefix('ncurses-tools')}/bin", + f"--sbindir={get_prefix('ncurses-tools')}/sbin", + f"--libdir={get_prefix('libncurses')}/lib", + f"--includedir={get_prefix('libncurses')}/include", "--enable-pc-files", "--with-shared", "--with-terminfo-dirs=/share/terminfo", @@ -33,7 +37,6 @@ def build(): cpp.make() cpp.make_install() os.unlink("lib/terminfo") - os.rename("usr/lib/pkgconfig", "lib/pkgconfig") on_build(build) diff --git a/packages/pkgconf/pkgbuild.py b/packages/pkgconf/pkgbuild.py index f4c843f..91955ac 100644 --- a/packages/pkgconf/pkgbuild.py +++ b/packages/pkgconf/pkgbuild.py @@ -10,6 +10,9 @@ def build(): cpp.configure( [ "--prefix=/", + f"--bindir={get_prefix('pkgconf')}/bin", + f"--libdir={get_prefix('libpkgconf')}/lib", + f"--includedir={get_prefix('libpkgconf-dev')}/include", f"--with-system-libdir=/lib:/lib/{arch.get_target()}", f"--with-system-includedir=/lib/{arch.get_target()}/include", f"--with-pkg-config-dir=/lib/{arch.get_target()}/pkgconfig", diff --git a/packages/python/pkgbuild.py b/packages/python/pkgbuild.py index b3338b5..19b1a1d 100644 --- a/packages/python/pkgbuild.py +++ b/packages/python/pkgbuild.py @@ -37,10 +37,6 @@ def build(): ] ) cpp.make() - try: - shutil.rmtree("../cpp_install") - except: - pass cpp.make_install() os.rename( f"lib/{arch.get_target()}/python{VERSION_BASE}", f"lib/python{VERSION_BASE}" diff --git a/packages/sqlite/pkgbuild.py b/packages/sqlite/pkgbuild.py index 4457c35..8d8d8f3 100644 --- a/packages/sqlite/pkgbuild.py +++ b/packages/sqlite/pkgbuild.py @@ -9,6 +9,9 @@ def build(): cpp.configure( [ "--prefix=/", + f"--libdir={get_prefix('libsqlite')}/lib", + f"--bindir={get_prefix('sqlite')}/bin", + f"--includedir={get_prefix('libsqlite-dev')}/include", "--all", "--with-linenoise=/pkg/linenoise-dev=2.0@any", "--icu-collations", diff --git a/packages/xz/pkgbuild.py b/packages/xz/pkgbuild.py index 12a377e..c368342 100644 --- a/packages/xz/pkgbuild.py +++ b/packages/xz/pkgbuild.py @@ -8,7 +8,14 @@ source_url( def build(): - cpp.configure(["--prefix=/"]) + cpp.configure( + [ + "--prefix=/", + f"--libdir={get_prefix('liblzma')}/lib", + f"--bindir={get_prefix('xz')}/bin", + f"--includedir={get_prefix('liblzma-dev')}/include", + ] + ) cpp.make() cpp.make_install() diff --git a/packages/zlib-ng/pkgbuild.py b/packages/zlib-ng/pkgbuild.py index e7fabef..1acdf4c 100644 --- a/packages/zlib-ng/pkgbuild.py +++ b/packages/zlib-ng/pkgbuild.py @@ -11,7 +11,6 @@ def build(): cpp.cmake(["-DZLIB_COMPAT=ON", "-DINSTALL_UTILS=ON"]) cpp.ninja() cpp.ninja_install() - os.chdir("usr") on_build(build) diff --git a/packages/zstd/pkgbuild.py b/packages/zstd/pkgbuild.py index ed63e4f..7ae1452 100644 --- a/packages/zstd/pkgbuild.py +++ b/packages/zstd/pkgbuild.py @@ -12,7 +12,6 @@ source_url( def build(): cpp.make(["HAVE_ZLIB=0", "HAVE_LZMA=0", "HAVE_LZ4=0"]) cpp.make_install() - os.chdir("usr/local") on_build(build)