__init__.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from devtools.yamaker.modules import Linkable, Switch, py_srcs
  2. from devtools.yamaker.project import NixProject
  3. from devtools.yamaker import python
  4. def post_install(self):
  5. dist_files = python.extract_dist_info(self)
  6. with self.yamakes["."] as pillow:
  7. # libxcd is not present in Arcadia and should be removed from build.
  8. # I have failed to get a proper nix setup.
  9. pillow.CFLAGS.remove("-DHAVE_XCB")
  10. pillow.to_py_library(
  11. PEERDIR=["contrib/python/cffi", "contrib/python/olefile"],
  12. PY_SRCS=py_srcs(self.dstdir),
  13. RESOURCE_FILES=python.prepare_resource_files(self, *dist_files),
  14. )
  15. # TODO: generate PY_REGISTER automagically?
  16. pillow.PY_REGISTER += [
  17. "PIL._imagingcms",
  18. "PIL._imagingft",
  19. "PIL._imagingmath",
  20. "PIL._imagingmorph",
  21. "PIL._webp",
  22. ]
  23. # Allow grabbing screen image where GUI is available
  24. pillow.PY_SRCS.remove("PIL/ImageGrab.py")
  25. pillow.after(
  26. "PY_SRCS",
  27. Switch(
  28. {
  29. "OS_DARWIN OR OS_WINDOWS": Linkable(PY_SRCS=["TOP_LEVEL", "PIL/ImageGrab.py"]),
  30. },
  31. ),
  32. )
  33. # Allow using libimagequant in non-opensource builds
  34. pillow.CFLAGS.remove("-DHAVE_LIBIMAGEQUANT")
  35. pillow.PEERDIR.remove("contrib/libs/libimagequant")
  36. pillow.ADDINCL.remove("contrib/libs/libimagequant")
  37. pillow.after(
  38. "CFLAGS",
  39. Switch(
  40. {
  41. "NOT OPENSOURCE": Linkable(
  42. CFLAGS=["-DHAVE_LIBIMAGEQUANT"],
  43. PEERDIR=['contrib/libs/libimagequant'],
  44. ADDINCL=['contrib/libs/libimagequant'],
  45. ),
  46. }
  47. ),
  48. )
  49. pillow = NixProject(
  50. owners=["g:python-contrib"],
  51. arcdir="contrib/python/Pillow/py3",
  52. nixattr=python.make_nixattr("pillow"),
  53. install_subdir="src",
  54. build_install_subdir="build",
  55. copy_sources=[
  56. "PIL/*.py",
  57. "libImaging/ImDib.h",
  58. ],
  59. copy_sources_except=[
  60. "PIL/ImageTk.py",
  61. "PIL/ImageQt.py",
  62. "PIL/_tkinter_finder.py",
  63. ],
  64. disable_includes=[
  65. "config.h",
  66. "raqm.h",
  67. "thirdparty/raqm/raqm.h",
  68. "fribidi.h",
  69. "thirdparty/fribidi-shim/fribidi.h",
  70. "hb.h",
  71. "xcb/xcb.h",
  72. ],
  73. ignore_targets=[
  74. f"_imagingtk.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu",
  75. ],
  76. put={
  77. f"_imaging.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu": ".",
  78. },
  79. put_with={
  80. f"_imaging.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu": [
  81. f"_imagingcms.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu",
  82. f"_imagingft.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu",
  83. f"_imagingmath.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu",
  84. f"_imagingmorph.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu",
  85. f"_webp.cpython-{python._VERSION_DOTLESS}-x86_64-linux-gnu",
  86. ],
  87. },
  88. post_install=post_install,
  89. )