files = {
    "blt_2.5.3+dfsg-4.1_amd64.deb": "1f4fe70b93976daf7cb728f3fb7561edbb0c78360f053a521ee9075f2ec5c809",
    "coreutils_8.32-4+b1_amd64.deb": "3558a412ab51eee4b60641327cb145bb91415f127769823b68f9335585b308d4",
    "fontconfig-config_2.13.1-4.2_all.deb": "48afb6ad7d15e6104a343b789f73697301ad8bff77b69927bc998f5a409d8e90",
    "fonts-croscore_20201225-1_all.deb": "64904820b729ff40038f85683004e3b94b328d969bc0fbba263c58d635452923",
    "fonts-dejavu-core_2.37-2_all.deb": "1f67421437b6eb18669d2868e3e02cb88668683d635198142f48aacc5b397118",
    "fonts-freefont-otf_20120503-10_all.deb": "0b63996c80c6c660424af6d3832818e647960d6f65a51de010bb57dd0762faa7",
    "fonts-freefont-ttf_20120503-10_all.deb": "4ca1c21ebc479198a3a5879d236c8317d6f7b2f1c403f7890e24c02eead05615",
    "fonts-liberation2_2.1.3-1_all.deb": "e0805f0085132f5e6dd30f88c0d7260caf1e5450832fe2e3988a20fa9fa2150e",
    "fonts-liberation_1.07.4-11_all.deb": "efd381517f958b01969343634ffcbdd60056be7779af84c6f53a005090430204",
    "fonts-lyx_2.3.6-1_all.deb": "c6a1e4105d3c4edc246e4740560c9eda0e5fffec72dd03de256cf10f669fbec8",
    "fonts-texgyre_20180621-3.1_all.deb": "cb7e9a4b2471cfdd57194c16364f9102f0639816a2662fed4b30d2a158747076",
    "fonts-urw-base35_20200910-1_all.deb": "f95a139adb7f1b60626e76d4d45d1b35aad1bc2c2597394c291ef5f84b5dcb43",
    "libattr1_2.4.48-6_amd64.deb": "af3c3562eb2802481a2b9558df1b389f3c6d9b1bf3b4219e000e05131372ebaf",
    "libbrotli1_1.0.9-2+b2_amd64.deb": "65ca7d8b03e9dac09c5d544a89dd52d1aeb74f6a19583d32e4ff5f0c77624c24",
    "libbsd0_0.11.3-1_amd64.deb": "284a7b8dcfcad74770f57360721365317448b38ab773db542bf630e94e60c13e",
    "libdeflate0_1.7-1_amd64.deb": "dadaf0d28360f6eb21ad389b2e0f12f8709c9de539b28de9c11d7ec7043dec95",
    "libfontconfig1_2.13.1-4.2_amd64.deb": "b92861827627a76e74d6f447a5577d039ef2f95da18af1f29aa98fb96baea4c1",
    "libfreetype6_2.10.4+dfsg-1_amd64.deb": "e95396fc3cc806b2b95d9a00b4226eb464bc3ef4817c798749a0dd582546e5bc",
    "libimagequant0_2.12.2-1.1_amd64.deb": "cca1a4d3c24358c75964c720445a1ba50467aa52af7fb82a387f460a4a065096",
    "libjbig0_2.1-3.1+b2_amd64.deb": "9646d69eefce505407bf0437ea12fb7c2d47a3fd4434720ba46b642b6dcfd80f",
    "libjpeg62-turbo_2.0.6-4_amd64.deb": "28de780a1605cf501c3a4ebf3e588f5110e814b208548748ab064100c32202ea",
    "libjs-jquery-ui_1.12.1+dfsg-8+deb11u1_all.deb": "9a2cea1140b526daa97e51f91bea63cb05679c4206d70e926915836d4f72be58",
    "liblcms2-2_2.12~rc1-2_amd64.deb": "0608ecb6ed258814e390b52b3fb50f2a6d3239b5ecb1086292ae08be00a67b0f",
    "libmd0_1.0.3-3_amd64.deb": "9e425b3c128b69126d95e61998e1b5ef74e862dd1fc953d91eebcc315aea62ea",
    "libpng16-16_1.6.37-3_amd64.deb": "7d5336af395d1f658d0e66d74d0e1f4c632028750e7e04314d1a650e0317f3d6",
    "libtcl8.6_8.6.11+dfsg-1_amd64.deb": "785df3d81010a67ded4a2c216c7b99657c6ab3d1ba7369119894abc851e5bb0c",
    "libtiff5_4.2.0-1_amd64.deb": "ec12fc6a05a30f8f98878dbb6d9b356d170d5f6239fb68ba6a1dc9eb89ba3194",
    "libtk8.6_8.6.11-2_amd64.deb": "20d70721a5d539266a8736800378398d088419b986b5313ca811203284690f12",
    "libwebp6_0.6.1-2.1_amd64.deb": "52bfd0f8d3a1bbd2c25fcd72fab857d0f24aea35874af68e057dde869ae3902c",
    "libwebpdemux2_0.6.1-2.1_amd64.deb": "bba38f28d461b6b2e94fc51fff34e0d179c2dea3b0c31a77de788f2023be6614",
    "libwebpmux3_0.6.1-2.1_amd64.deb": "78486e53903cbf422dfe04a33e5481c56c82198a2bfa307f2066e616477395f5",
    "libx11-6_1.7.2-1_amd64.deb": "086bd667fc07369472a923da015d182bb0c15a72228a5c0e6ddbcbeaab70acd2",
    "libx11-data_1.7.2-1_all.deb": "049b7eabced516acfdf44a5e81c26d108b16e4987e5d7604ea53eaade74027fb",
    "libxau6_1.0.9-1_amd64.deb": "679db1c4579ec7c61079adeaae8528adeb2e4bf5465baa6c56233b995d714750",
    "libxcb1_1.14-3_amd64.deb": "d5e0f047ed766f45eb7473947b70f9e8fddbe45ef22ecfd92ab712c0671a93ac",
    "libxdmcp6_1.1.2-3_amd64.deb": "ecb8536f5fb34543b55bb9dc5f5b14c9dbb4150a7bddb3f2287b7cab6e9d25ef",
    "libxext6_1.3.3-1.1_amd64.deb": "dc1ff8a2b60c7dd3c8917ffb9aa65ee6cda52648d9150608683c47319d1c0c8c",
    "libxft2_2.3.2-2_amd64.deb": "cd71384b4d511cba69bcee29af326943c7ca12450765f44c40d246608c779aad",
    "libxrender1_0.9.10-1_amd64.deb": "3ea17d07b5aa89012130e2acd92f0fc0ea67314e2f5eab6e33930ef688f48294",
    "libxss1_1.2.3-1_amd64.deb": "85cce16368f08a878fa892fbc54520fc654d00769cde6d300b8b802734a993c0",
    "python-matplotlib-data_3.3.4-1_all.deb": "3ae74d712766f261e41502a712ec8b471f7514b7fc4ae03fb6df539a553b61ff",
    "python3-cycler_0.10.0-3_all.deb": "87022b0aaf76b345ed80a6737326592a6009035a0eb694f475030ad325e91262",
    "python3-dateutil_2.8.1-6_all.deb": "59d2e32149471adee915d6b721726612c873a83f262a041899573a1867e9e450",
    "python3-kiwisolver_1.3.1-1+b1_amd64.deb": "ace5f22edfc057f252a57da7c04145ae298dddc658e3e72dbe7bddd39e03838a",
    "python3-matplotlib_3.3.4-1_amd64.deb": "e411a5de1fb43c3076697b48ec7eb36d4c98e6359d6717b34adfdd40b49fb9d5",
    "python3-pil.imagetk_8.1.2+dfsg-0.3_amd64.deb": "b0e98d9c7ebdee941b0a24f40c7b29b4cb4c8759e04c478da1d0380ebf956c1e",
    "python3-pil_8.1.2+dfsg-0.3_amd64.deb": "a0e44fe855f0b4f7a175fe4dad7db27a18adc8a0119e930010bc95641c66237a",
    "python3-pyparsing_2.4.7-1_all.deb": "bec23dc18bb37357f34e77e3f9590224b2d0f3bb4d9bb099600fa2d547800aa3",
    "python3-six_1.16.0-2_all.deb": "acd4271ba56e42298b9fab0fcdad8f319970b50d1026f8469eed968a20f28761",
    "python3-tk_3.9.2-1_amd64.deb": "272db7708d60675b6aaea98aef64131e2bc9ec443ad677ef247d341632d9ef07",
    "sensible-utils_0.0.14_all.deb": "b9a447dc4ec8714196b037e20a2209e62cd669f5450222952f259bda4416b71f",
    "tk8.6-blt2.5_2.5.3+dfsg-4.1_amd64.deb": "f12f8dd7ed62386d4a798ee84df7fd976b9ba4d9a930ba5b5d4bf48bd16437ca",
    "ttf-bitstream-vera_1.10-8.1_all.deb": "ba622edf73744b2951bbd20bfc113a1a875a9b0c6fed1ac9e9c7f4b54dd8a048",
    "ucf_3.0043_all.deb": "ebef6bcd777b5c0cc2699926f2159db08433aed07c50cb321fd828b28c5e8d53",
}

def build_matplotlib(version, tkinter_py_version = None, copy_shared_files = True):
    """Creates a py_library rule for matplotlib for the given python version.

    See debian/matplotlib.BUILD for the usage.

    All the rules generated by this will be suffixed by version. Only one
    instance of this macro should set copy_shared_files, which generate the
    files that are shared between python versions.

    tkinter_py_version is used because for the Python3 instance, some files
    are in folders named python3 and some are in folders named python3.5...

    version numbers should both be strings.
    """
    if tkinter_py_version == None:
        tkinter_py_version = version

    native.genrule(
        name = "patch_init" + version,
        srcs = [
            "usr/lib/python" + version + "/dist-packages/matplotlib/__init__.py",
            "@//debian:matplotlib_patches",
        ],
        outs = [version + "/matplotlib/__init__.py"],
        cmd = " && ".join([
            "cp $(location usr/lib/python" + version + "/dist-packages/matplotlib/__init__.py) $@",
            "readonly PATCH=\"$$(readlink -f $(location @patch))\"",
            "readonly FILE=\"$$(readlink -f $(location @//debian:matplotlib_patches))\"",
            "(cd $(@D) && \"$${PATCH}\" -p1 < \"$${FILE}\") > /dev/null",
        ]),
        tools = [
            "@patch",
        ],
    )

    _src_files = native.glob(
        include = ["usr/lib/python" + version + "/dist-packages/**/*.py"],
        exclude = [
            "usr/lib/python" + version + "/dist-packages/matplotlib/__init__.py",
        ],
    )

    _data_files = native.glob([
        "usr/share/matplotlib/mpl-data/**",
        "usr/share/tcltk/**",
    ])

    _src_copied = ["/".join([version] + f.split("/")[4:]) for f in _src_files]

    _builtin_so_files = native.glob([
        "usr/lib/python" + version + "/dist-packages/**/*x86_64-linux-gnu.so",
        "usr/lib/python" + tkinter_py_version + "/lib-dynload/*.so",
    ])

    _system_so_files = native.glob([
        "usr/lib/**/*.so*",
        "lib/x86_64-linux-gnu/**/*.so*",
    ])

    _builtin_so_copied = ["/".join([version] + f.split("/")[4:]) for f in _builtin_so_files]

    rpath_prefix = "rpathed" + version + "/"

    _system_so_copied = [rpath_prefix + f for f in _system_so_files]

    _builtin_rpaths = [":".join([
        "\\$$ORIGIN/%s" % rel,
        "\\$$ORIGIN/%s/%s/usr/lib/x86_64-linux-gnu" % (rel, rpath_prefix),
        "\\$$ORIGIN/%s/%s/usr/lib" % (rel, rpath_prefix),
        "\\$$ORIGIN/%s/%s/lib/x86_64-linux-gnu" % (rel, rpath_prefix),
    ]) for rel in ["/".join([".." for _ in so.split("/")[1:]]) for so in _builtin_so_copied]]

    _system_rpaths = [":".join([
        "\\$$ORIGIN/%s/%s/usr/lib/x86_64-linux-gnu" % (rel, rpath_prefix),
        "\\$$ORIGIN/%s/%s/lib/x86_64-linux-gnu" % (rel, rpath_prefix),
    ]) for rel in ["/".join([".." for _ in so.split("/")[1:]]) for so in _system_so_copied]]

    native.genrule(
        name = "run_patchelf_builtin" + version,
        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",
        ],
    )

    native.genrule(
        name = "run_patchelf_system" + version,
        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",
        ],
    )

    native.genrule(
        name = "copy_files" + version,
        srcs = _src_files,
        outs = _src_copied,
        cmd = " && ".join(["cp $(location %s) $(location %s)" % (src, dest) for src, dest in zip(
            _src_files,
            _src_copied,
        )]),
    )

    if copy_shared_files:
        native.genrule(
            name = "create_rc" + version,
            srcs = ["etc/matplotlibrc"],
            outs = ["usr/share/matplotlib/mpl-data/matplotlibrc"],
            cmd = "cat $< > $@",
        )

    native.py_library(
        name = "matplotlib" + version,
        srcs = _src_copied + [
            version + "/matplotlib/__init__.py",
        ] + native.glob(
            include = ["usr/lib/python" + tkinter_py_version + "/**/*.py"],
        ),
        data = _data_files + _builtin_so_copied + _system_so_copied + [
        ] + native.glob(["etc/**", "usr/share/fonts/**"]),
        imports = [
            "rpathed3/usr/lib/python" + version + "/dist-packages",
            "rpathed3/usr/lib/python" + version + ".9/lib-dynload",
            version,
            ".",
            "usr/lib/python" + tkinter_py_version,
        ],
        target_compatible_with = ["@platforms//cpu:x86_64"],
        visibility = ["//visibility:public"],
        deps = [
            "@python_repo//:numpy",
        ],
    )
