Files
ports/hooks/autolink.py
T
2026-10-02 13:42:50 +00:00

77 lines
2.0 KiB
Python

import os
from lib import arch, common, make, pkgcomposer
def do(f):
try:
f()
except:
pass
def is_abslink(path):
try:
return os.readlink(path).startswith("/")
except:
return False
def autolink_bin():
if is_abslink("bin"):
return
for i in common.treedir("bin"):
if i.is_file() and os.access(i.path, os.X_OK):
make.link(f"bin/{i.name}", "/bin/" + i.name)
def autolink_lib():
if is_abslink("lib"):
return
for i in common.treedir("lib"):
if i.is_file():
make.link(f"lib/{i.name}", "/lib/" + arch.get_target() + "/" + i.name)
def autolink_include():
if is_abslink("include"):
return
for i in common.treedir("include"):
if i.is_file():
make.link(
f"include/{i.name}",
"/lib/" + arch.get_target() + "/include/" + i.name,
)
def autolink_share_pkgconfig():
if is_abslink("share/pkgconfig"):
return
for i in common.treedir("share/pkgconfig"):
if i.is_file():
make.link(f"share/pkgconfig/{i.name}", "/share/pkgconfig/" + i.name)
def autolink_services():
for i in common.treedir("share/services"):
if i.is_file() and os.access(i.path, os.F_OK):
make.link(f"share/services/{i.name}", "/share/services/" + i.name)
def autolink_milestones():
for i in common.treedir("share/milestones"):
if i.is_file() and os.access(i.path, os.F_OK):
make.link(f"share/milestones/{i.name}", "/share/milestones/" + i.name)
def autolink_fonts():
for i in common.treedir("share/fonts"):
if i.is_file() and os.access(i.path, os.F_OK):
make.link(f"share/fonts/{i.name}", "/share/fonts/" + i.name)
def autolink(composer: pkgcomposer.PkgComposer):
os.chdir(composer.workdir + "/bundle/")
do(autolink_bin)
do(autolink_lib)
do(autolink_include)
do(autolink_share_pkgconfig)
do(autolink_services)
do(autolink_milestones)
do(autolink_fonts)