blob: e1cdc9913a7a412491a6539555c97defc9f9c0c1 [file] [log] [blame]
genrule(
name = "patch_gi_init",
srcs = [
"usr/lib/python3/dist-packages/gi/__init__.py",
"@//debian:python_gi_patches",
],
outs = ["gi/__init__.py"],
cmd = " && ".join([
"cp $(location usr/lib/python3/dist-packages/gi/__init__.py) $@",
"readonly PATCH=\"$$(readlink -f $(location @patch))\"",
"readonly FILE=\"$$(readlink -f $(location @//debian:python_gi_patches))\"",
"(cd $(@D) && \"$${PATCH}\" -p1 < \"$${FILE}\") > /dev/null",
]),
tools = [
"@patch",
],
)
genrule(
name = "patch_shapely_init",
srcs = [
"usr/lib/python3/dist-packages/shapely/__init__.py",
"@//debian:python_shapely_patches",
],
outs = ["shapely/__init__.py"],
cmd = " && ".join([
"cp $(location usr/lib/python3/dist-packages/shapely/__init__.py) $@",
"readonly PATCH=\"$$(readlink -f $(location @patch))\"",
"readonly FILE=\"$$(readlink -f $(location @//debian:python_shapely_patches))\"",
"(cd $(@D) && \"$${PATCH}\" -p1 < \"$${FILE}\") > /dev/null",
]),
tools = [
"@patch",
],
)
genrule(
name = "patch_geos",
srcs = [
"usr/lib/python3/dist-packages/shapely/geos.py",
"@//debian:python_geos_patches",
],
outs = ["shapely/geos.py"],
cmd = " && ".join([
"cp $(location usr/lib/python3/dist-packages/shapely/geos.py) $@",
"readonly PATCH=\"$$(readlink -f $(location @patch))\"",
"readonly FILE=\"$$(readlink -f $(location @//debian:python_geos_patches))\"",
"(cd $(@D) && \"$${PATCH}\" -p1 < \"$${FILE}\") > /dev/null",
]),
tools = [
"@patch",
],
)
_src_files = glob(
include = ["usr/lib/python3/dist-packages/**/*.py"],
exclude = [
"usr/lib/python3/dist-packages/gi/__init__.py",
"usr/lib/python3/dist-packages/shapely/__init__.py",
"usr/lib/python3/dist-packages/shapely/geos.py",
],
)
_data_files = glob([
"usr/lib/x86_64-linux-gnu/girepository-1.0/**/*",
"usr/share/font*/**",
"etc/**",
])
_src_copied = ["/".join(f.split("/")[4:]) for f in _src_files]
_builtin_so_files = glob([
"usr/lib/python3/dist-packages/**/*.cpython-35m-x86_64-linux-gnu.so",
])
_system_so_files = glob(
include = [
"lib/x86_64-linux-gnu/**/*.so*",
"usr/lib/**/*.so*",
],
exclude = [
"usr/lib/**/*.cpython-35m-x86_64-linux-gnu.so",
"usr/lib/gcc/x86_64-linux-gnu/6/libgcc_s.so.1",
"usr/lib/gcc/x86_64-linux-gnu/6/libgcc_s.so",
],
)
_builtin_so_copied = ["/".join(f.split("/")[4:]) for f in _builtin_so_files]
_system_so_copied = ["rpathed/" + f for f in _system_so_files]
_builtin_rpaths = [":".join([
"\\$$ORIGIN/%s" % rel,
"\\$$ORIGIN/%s/rpathed/usr/lib/x86_64-linux-gnu" % rel,
"\\$$ORIGIN/%s/rpathed/usr/lib" % rel,
"\\$$ORIGIN/%s/rpathed/lib/x86_64-linux-gnu" % rel,
]) for rel in ["/".join([".." for _ in so.split("/")[1:]]) for so in _builtin_so_copied]]
_system_rpaths = [":".join([
"\\$$ORIGIN/%s/rpathed/usr/lib/x86_64-linux-gnu" % rel,
"\\$$ORIGIN/%s/rpathed/usr/lib" % rel,
"\\$$ORIGIN/%s/rpathed/lib/x86_64-linux-gnu" % rel,
]) for rel in ["/".join([".." for _ in so.split("/")[1:]]) for so in _system_so_copied]]
genrule(
name = "run_patchelf_builtin",
srcs = _builtin_so_files,
outs = _builtin_so_copied,
cmd = "\n".join(
[
"cp $(location %s) $(location %s)" % (src, dest)
for src, dest in zip(_builtin_so_files, _builtin_so_copied)
] +
["$(location @patchelf) --set-rpath %s $(location %s)" % (rpath, so) for rpath, so in zip(_builtin_rpaths, _builtin_so_copied)],
),
tools = [
"@patchelf",
],
)
genrule(
name = "run_patchelf_system",
srcs = _system_so_files,
outs = _system_so_copied,
cmd = "\n".join(
[
"cp $(location %s) $(location %s)" % (src, dest)
for src, dest in zip(_system_so_files, _system_so_copied)
] +
["$(location @patchelf) --set-rpath %s $(location %s)" % (rpath, so) for rpath, so in zip(_system_rpaths, _system_so_copied)],
),
tools = [
"@patchelf",
],
)
genrule(
name = "copy_libgeos_c",
srcs = ["rpathed/usr/lib/x86_64-linux-gnu/libgeos_c.so.1"],
outs = ["rpathed/usr/lib/x86_64-linux-gnu/libgeos_c.so"],
cmd = "cp $< $@",
)
genrule(
name = "copy_files",
srcs = _src_files,
outs = _src_copied,
cmd = " && ".join(["cp $(location %s) $(location %s)" % (src, dest) for src, dest in zip(
_src_files,
_src_copied,
)]),
)
py_library(
name = "python_gtk",
srcs = _src_copied + [
"gi/__init__.py",
"shapely/__init__.py",
"shapely/geos.py",
],
data = _data_files + _builtin_so_copied + _system_so_copied + [
"rpathed/usr/lib/x86_64-linux-gnu/libgeos_c.so",
],
imports = ["usr/lib/python3/dist-packages"],
restricted_to = ["@//tools:k8"],
visibility = ["//visibility:public"],
)