forked from semios/semios-packages
Compare commits
1
Commits
cairo
..
zipsupport
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ada9d32fb |
+42
-10
@@ -4,6 +4,7 @@ import sys
|
||||
import tarfile
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
import zipfile
|
||||
|
||||
|
||||
def filename(url):
|
||||
@@ -128,6 +129,25 @@ def tar_common_root(tar: tarfile.TarFile) -> str | None:
|
||||
return root
|
||||
|
||||
|
||||
def zip_common_root(zip_file: zipfile.ZipFile) -> str | None:
|
||||
members = zip_file.infolist()
|
||||
if not members:
|
||||
return None
|
||||
root = None
|
||||
for member in members:
|
||||
path = member.filename.replace('\\', '/').lstrip('./').lstrip('/')
|
||||
if not path:
|
||||
continue
|
||||
this_root = path.split('/')[0]
|
||||
if this_root in ('', '.', '..'):
|
||||
continue
|
||||
if root is None:
|
||||
root = this_root
|
||||
elif this_root != root:
|
||||
return None
|
||||
return root
|
||||
|
||||
|
||||
def sources_dir_name() -> str:
|
||||
with open("./target/sources.tag") as file:
|
||||
return file.read()
|
||||
@@ -139,16 +159,28 @@ def source_url(url: str):
|
||||
download_path = f"./target/{filename(url)}"
|
||||
download(url, download_path)
|
||||
|
||||
with tarfile.open(download_path, "r") as tar:
|
||||
common_root = tar_common_root(tar)
|
||||
extract_dir = "./target"
|
||||
sources_dir = f"./target/{common_root}"
|
||||
if common_root in ["", ".", "None"]:
|
||||
extract_dir = "./target/sources"
|
||||
sources_dir = "./target/sources"
|
||||
tar.extractall(extract_dir)
|
||||
with open("./target/sources.tag", "wt+") as file:
|
||||
file.write(sources_dir)
|
||||
if download_path.endswith(".zip"):
|
||||
with zipfile.ZipFile(download_path, "r") as zip:
|
||||
common_root = zip_common_root(zip)
|
||||
else:
|
||||
with tarfile.open(download_path, "r") as tar:
|
||||
common_root = tar_common_root(tar)
|
||||
|
||||
extract_dir = "./target"
|
||||
sources_dir = f"./target/{common_root}"
|
||||
if common_root in ["", ".", None]:
|
||||
extract_dir = "./target/sources"
|
||||
sources_dir = "./target/sources"
|
||||
|
||||
if download_path.endswith(".zip"):
|
||||
with zipfile.ZipFile(download_path, "r") as zip:
|
||||
zip.extractall(extract_dir)
|
||||
else:
|
||||
with tarfile.open(download_path, "r") as tar:
|
||||
tar.extractall(extract_dir)
|
||||
|
||||
with open("./target/sources.tag", "wt+") as file:
|
||||
file.write(sources_dir)
|
||||
|
||||
|
||||
def _git_repo_name(url: str) -> str:
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
import os
|
||||
|
||||
from lib import cpp
|
||||
from lib.make import *
|
||||
|
||||
|
||||
version("1.18.4")
|
||||
description("a 2D graphics library with support for multiple output devices")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://cairographics.org/releases/cairo-1.18.4.tar.xz")
|
||||
|
||||
builddep("shortcut/c")
|
||||
builddep("shortcut/meson")
|
||||
builddep("pkgconf")
|
||||
builddep(f"glib-dev @{arch.get_target()}")
|
||||
builddep(f"libfontconfig-dev @{arch.get_target()}")
|
||||
builddep(f"libfreetype-dev @{arch.get_target()}")
|
||||
builddep(f"libpng-dev @{arch.get_target()}")
|
||||
|
||||
|
||||
def build():
|
||||
cpp.meson_setup([
|
||||
f"--libdir={get_prefix('libcairo')}/lib",
|
||||
f"--includedir={get_prefix('libcairo-dev')}/include",
|
||||
f"--bindir={get_prefix('libcairo-dev')}/bin",
|
||||
"-Dfontconfig=enabled",
|
||||
"-Dfreetype=enabled",
|
||||
"-Dpng=enabled",
|
||||
"-Dtee=enabled",
|
||||
"-Dglib=enabled",
|
||||
])
|
||||
cpp.meson_compile()
|
||||
cpp.meson_install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
def pack_libcairo(composer):
|
||||
composer.makedir("lib")
|
||||
for i in os.listdir("lib"):
|
||||
if ".so" in i and "gobject" not in i:
|
||||
composer.addfile(f"lib/{i}", f"lib/{i}")
|
||||
composer.add_dir("lib/cairo", "lib/cairo")
|
||||
|
||||
def pack_libcairo_dev(composer):
|
||||
composer.makedirs("lib/pkgconfig")
|
||||
for i in os.listdir("lib/pkgconfig"):
|
||||
if "gobject" not in i:
|
||||
composer.addfile(f"lib/pkgconfig/{i}", f"lib/pkgconfig/{i}")
|
||||
composer.makedirs("include/cairo")
|
||||
for i in os.listdir("include/cairo"):
|
||||
if "gobject" not in i:
|
||||
composer.addfile(f"include/cairo/{i}", f"include/cairo/{i}")
|
||||
composer.add_dir("bin", "bin")
|
||||
|
||||
def pack_libcairo_gobject(composer):
|
||||
composer.makedir("lib")
|
||||
for i in os.listdir("lib"):
|
||||
if ".so" in i and "gobject" in i:
|
||||
composer.addfile(f"lib/{i}", f"lib/{i}")
|
||||
|
||||
def pack_libcairo_gobject_dev(composer):
|
||||
composer.makedirs("lib/pkgconfig")
|
||||
for i in os.listdir("lib/pkgconfig"):
|
||||
if "gobject" in i:
|
||||
composer.addfile(f"lib/pkgconfig/{i}", f"lib/pkgconfig/{i}")
|
||||
composer.makedirs("include/cairo")
|
||||
for i in os.listdir("include/cairo"):
|
||||
if "gobject" in i:
|
||||
composer.addfile(f"include/cairo/{i}", f"include/cairo/{i}")
|
||||
|
||||
|
||||
package("libcairo")
|
||||
dep("libfontconfig @same-arch")
|
||||
dep("libpng @same-arch")
|
||||
dep("libpixman @same-arch")
|
||||
dep("libfreetype @same-arch")
|
||||
dep("libz @same-arch")
|
||||
on_pack(pack_libcairo)
|
||||
|
||||
package("libcairo-dev")
|
||||
dep("libcairo (same)")
|
||||
dep("libfontconfig-dev @same-arch")
|
||||
dep("libpng-dev @same-arch")
|
||||
dep("libpixman-dev @same-arch")
|
||||
dep("libfreetype-dev @same-arch")
|
||||
dep("libz-dev @same-arch")
|
||||
on_pack(pack_libcairo_dev)
|
||||
|
||||
package("libcairo-gobject")
|
||||
dep("libcairo (same)")
|
||||
dep("libglib @same-arch")
|
||||
dep("libgobject @same-arch")
|
||||
on_pack(pack_libcairo_gobject)
|
||||
|
||||
package("libcairo-gobject-dev")
|
||||
dep("libcairo-dev (same)")
|
||||
dep("glib-dev @same-arch")
|
||||
on_pack(pack_libcairo_gobject)
|
||||
@@ -119,6 +119,7 @@ def cmd_build_package(package: str):
|
||||
"version": pkgver,
|
||||
"arch": pkgarch,
|
||||
"description": pkginfo[lib.make._key_description],
|
||||
"maintainers": pkginfo[lib.make._key_maintainers],
|
||||
"dependencies": pkginfo[lib.make._key_dependencies],
|
||||
"provides": pkginfo[lib.make._key_provides],
|
||||
"recommendations": pkginfo[lib.make._key_recommendations],
|
||||
|
||||
Reference in New Issue
Block a user