load("@bazeldnf//:def.bzl", "bazeldnf")
load("@bazeldnf//:deps.bzl", "rpmtree", "tar2files")
load("@rules_cc//cc:defs.bzl", "cc_library")

cc_library(
    name = "cryptsetup",
    srcs = ["//rpm:cryptsetup-libs/usr/lib64"],
    hdrs = ["//rpm:cryptsetup-libs/usr/include"],
    linkstatic = 1,
    strip_include_prefix = "/rpm/cryptsetup-libs/",
    visibility = ["//visibility:public"],
)

cc_library(
    name = "libvirt",
    srcs = ["//rpm:libvirt-libs/usr/lib64"],
    hdrs = ["//rpm:libvirt-libs/usr/include/libvirt"],
    include_prefix = "libvirt",
    linkstatic = 1,
    strip_include_prefix = "/rpm/libvirt-libs/",
    visibility = ["//visibility:public"],
)

bazeldnf(
    name = "ldd-cryptsetup",
    command = "ldd",
    libs = [
        "/usr/lib64/libcryptsetup.so.12.8.0",
        "/usr/lib64/libcryptsetup.so.12",
    ],
    rpmtree = ":cryptsetup-devel",
    rulename = "cryptsetup-libs",
)

bazeldnf(
    name = "ldd-libvirt",
    command = "ldd",
    libs = [
        "/usr/lib64/libvirt-lxc.so.0",
        "/usr/lib64/libvirt-qemu.so.0",
        "/usr/lib64/libvirt.so.0",
        "/usr/lib64/libgcrypt.so.20",
        "/usr/lib64/libkrb5support.so.0",
        "/usr/lib64/libkeyutils.so.1",
        "/usr/lib64/liblz4.so.1",
        "/usr/lib64/libmount.so.1",
    ],
    rpmtree = ":libvirt-devel",
    rulename = "libvirt-libs",
)

bazeldnf(
    name = "ldd-glibc",
    command = "ldd",
    libs = [
        "/usr/lib64/ld-linux-x86-64.so.2",
    ],
    rpmtree = ":glibc",
    rulename = "ld-linux-x86-64-libs",
)

genrule(
    name = "ld",
    srcs = ["//rpm:ld-linux-x86-64-libs/usr/lib64"],
    outs = ["ld-linux-x86-64.so.2"],
    cmd = "cp $(location //rpm:ld-linux-x86-64-libs/usr/lib64) $@",
    executable = 1,
    visibility = ["//visibility:public"],
)

rpmtree(
    name = "cryptsetup-devel",
    rpms = [
        "@alternatives-0__1.21-1.fc37.x86_64//rpm",
        "@audit-libs-0__3.0.9-1.fc37.x86_64//rpm",
        "@basesystem-0__11-14.fc37.x86_64//rpm",
        "@bash-0__5.2.15-1.fc37.x86_64//rpm",
        "@bzip2-libs-0__1.0.8-12.fc37.x86_64//rpm",
        "@ca-certificates-0__2023.2.60-1.0.fc37.x86_64//rpm",
        "@coreutils-single-0__9.1-7.fc37.x86_64//rpm",
        "@crypto-policies-0__20220815-1.gite4ed860.fc37.x86_64//rpm",
        "@cryptsetup-devel-0__2.5.0-1.fc37.x86_64//rpm",
        "@cryptsetup-libs-0__2.5.0-1.fc37.x86_64//rpm",
        "@dbus-1__1.14.4-1.fc37.x86_64//rpm",
        "@dbus-broker-0__32-1.fc37.x86_64//rpm",
        "@dbus-common-1__1.14.4-1.fc37.x86_64//rpm",
        "@device-mapper-0__1.02.175-9.fc37.x86_64//rpm",
        "@device-mapper-libs-0__1.02.175-9.fc37.x86_64//rpm",
        "@expat-0__2.5.0-1.fc37.x86_64//rpm",
        "@fedora-gpg-keys-0__37-2.x86_64//rpm",
        "@fedora-release-common-0__37-15.x86_64//rpm",
        "@fedora-release-container-0__37-15.x86_64//rpm",
        "@fedora-release-identity-snappy-0__37-15.x86_64//rpm",
        "@fedora-repos-0__37-2.x86_64//rpm",
        "@filesystem-0__3.18-2.fc37.x86_64//rpm",
        "@glibc-0__2.36-9.fc37.x86_64//rpm",
        "@glibc-common-0__2.36-9.fc37.x86_64//rpm",
        "@glibc-langpack-tcy-0__2.36-9.fc37.x86_64//rpm",
        "@grep-0__3.7-4.fc37.x86_64//rpm",
        "@json-c-0__0.16-3.fc37.x86_64//rpm",
        "@kmod-libs-0__30-2.fc37.x86_64//rpm",
        "@libacl-0__2.3.1-4.fc37.x86_64//rpm",
        "@libargon2-0__20190702-1.fc37.x86_64//rpm",
        "@libattr-0__2.5.1-5.fc37.x86_64//rpm",
        "@libblkid-0__2.38.1-1.fc37.x86_64//rpm",
        "@libcap-0__2.48-5.fc37.x86_64//rpm",
        "@libcap-ng-0__0.8.3-3.fc37.x86_64//rpm",
        "@libeconf-0__0.4.0-4.fc37.x86_64//rpm",
        "@libfdisk-0__2.38.1-1.fc37.x86_64//rpm",
        "@libffi-0__3.4.2-9.fc37.x86_64//rpm",
        "@libgcc-0__12.2.1-4.fc37.x86_64//rpm",
        "@libmount-0__2.38.1-1.fc37.x86_64//rpm",
        "@libpkgconf-0__1.8.0-3.fc37.x86_64//rpm",
        "@libseccomp-0__2.5.3-3.fc37.x86_64//rpm",
        "@libselinux-0__3.4-5.fc37.x86_64//rpm",
        "@libsemanage-0__3.4-5.fc37.x86_64//rpm",
        "@libsepol-0__3.4-3.fc37.x86_64//rpm",
        "@libsmartcols-0__2.38.1-1.fc37.x86_64//rpm",
        "@libtasn1-0__4.19.0-1.fc37.x86_64//rpm",
        "@libuuid-0__2.38.1-1.fc37.x86_64//rpm",
        "@libxcrypt-0__4.4.33-4.fc37.x86_64//rpm",
        "@libzstd-0__1.5.2-3.fc37.x86_64//rpm",
        "@lz4-libs-0__1.9.4-1.fc37.x86_64//rpm",
        "@ncurses-base-0__6.3-4.20220501.fc37.x86_64//rpm",
        "@ncurses-libs-0__6.3-4.20220501.fc37.x86_64//rpm",
        "@openssl-libs-1__3.0.5-3.fc37.x86_64//rpm",
        "@p11-kit-0__0.24.1-3.fc37.x86_64//rpm",
        "@p11-kit-trust-0__0.24.1-3.fc37.x86_64//rpm",
        "@pam-libs-0__1.5.2-14.fc37.x86_64//rpm",
        "@pcre-0__8.45-1.fc37.2.x86_64//rpm",
        "@pcre2-0__10.40-1.fc37.1.x86_64//rpm",
        "@pcre2-syntax-0__10.40-1.fc37.1.x86_64//rpm",
        "@pkgconf-0__1.8.0-3.fc37.x86_64//rpm",
        "@pkgconf-m4-0__1.8.0-3.fc37.x86_64//rpm",
        "@pkgconf-pkg-config-0__1.8.0-3.fc37.x86_64//rpm",
        "@sed-0__4.8-11.fc37.x86_64//rpm",
        "@setup-0__2.14.1-2.fc37.x86_64//rpm",
        "@shadow-utils-2__4.12.3-4.fc37.x86_64//rpm",
        "@systemd-0__251.10-588.fc37.x86_64//rpm",
        "@systemd-libs-0__251.10-588.fc37.x86_64//rpm",
        "@systemd-pam-0__251.10-588.fc37.x86_64//rpm",
        "@tzdata-0__2022g-1.fc37.x86_64//rpm",
        "@util-linux-core-0__2.38.1-1.fc37.x86_64//rpm",
        "@xz-libs-0__5.4.1-1.fc37.x86_64//rpm",
        "@zlib-0__1.2.12-5.fc37.x86_64//rpm",
    ],
    visibility = ["//visibility:public"],
)

rpmtree(
    name = "glibc",
    rpms = [
        "@glibc-0__2.36-9.fc37.x86_64//rpm",
    ],
    visibility = ["//visibility:public"],
)

rpmtree(
    name = "libvirt-devel",
    rpms = [
        "@alternatives-0__1.21-1.fc37.x86_64//rpm",
        "@audit-libs-0__3.0.9-1.fc37.x86_64//rpm",
        "@authselect-0__1.4.2-1.fc37.x86_64//rpm",
        "@authselect-libs-0__1.4.2-1.fc37.x86_64//rpm",
        "@basesystem-0__11-14.fc37.x86_64//rpm",
        "@bash-0__5.2.15-1.fc37.x86_64//rpm",
        "@bzip2-libs-0__1.0.8-12.fc37.x86_64//rpm",
        "@ca-certificates-0__2023.2.60-1.0.fc37.x86_64//rpm",
        "@coreutils-0__9.1-7.fc37.x86_64//rpm",
        "@coreutils-common-0__9.1-7.fc37.x86_64//rpm",
        "@cracklib-0__2.9.7-30.fc37.x86_64//rpm",
        "@crypto-policies-0__20220815-1.gite4ed860.fc37.x86_64//rpm",
        "@cyrus-sasl-0__2.1.28-8.fc37.x86_64//rpm",
        "@cyrus-sasl-gssapi-0__2.1.28-8.fc37.x86_64//rpm",
        "@cyrus-sasl-lib-0__2.1.28-8.fc37.x86_64//rpm",
        "@fedora-gpg-keys-0__37-2.x86_64//rpm",
        "@fedora-release-common-0__37-15.x86_64//rpm",
        "@fedora-release-container-0__37-15.x86_64//rpm",
        "@fedora-release-identity-cinnamon-0__37-15.x86_64//rpm",
        "@fedora-repos-0__37-2.x86_64//rpm",
        "@filesystem-0__3.18-2.fc37.x86_64//rpm",
        "@gawk-0__5.1.1-4.fc37.x86_64//rpm",
        "@gdbm-libs-1__1.23-2.fc37.x86_64//rpm",
        "@glib2-0__2.74.1-2.fc37.x86_64//rpm",
        "@glibc-0__2.36-9.fc37.x86_64//rpm",
        "@glibc-common-0__2.36-9.fc37.x86_64//rpm",
        "@glibc-langpack-az-0__2.36-9.fc37.x86_64//rpm",
        "@gmp-1__6.2.1-3.fc37.x86_64//rpm",
        "@gnutls-0__3.7.8-3.fc37.x86_64//rpm",
        "@grep-0__3.7-4.fc37.x86_64//rpm",
        "@gzip-0__1.12-2.fc37.x86_64//rpm",
        "@keyutils-libs-0__1.6.1-5.fc37.x86_64//rpm",
        "@krb5-libs-0__1.19.2-13.fc37.x86_64//rpm",
        "@libacl-0__2.3.1-4.fc37.x86_64//rpm",
        "@libattr-0__2.5.1-5.fc37.x86_64//rpm",
        "@libblkid-0__2.38.1-1.fc37.x86_64//rpm",
        "@libcap-0__2.48-5.fc37.x86_64//rpm",
        "@libcap-ng-0__0.8.3-3.fc37.x86_64//rpm",
        "@libcom_err-0__1.46.5-3.fc37.x86_64//rpm",
        "@libcurl-minimal-0__7.85.0-5.fc37.x86_64//rpm",
        "@libdb-0__5.3.28-53.fc37.x86_64//rpm",
        "@libeconf-0__0.4.0-4.fc37.x86_64//rpm",
        "@libevent-0__2.1.12-7.fc37.x86_64//rpm",
        "@libfdisk-0__2.38.1-1.fc37.x86_64//rpm",
        "@libffi-0__3.4.2-9.fc37.x86_64//rpm",
        "@libgcc-0__12.2.1-4.fc37.x86_64//rpm",
        "@libgcrypt-0__1.10.1-4.fc37.x86_64//rpm",
        "@libgpg-error-0__1.46-1.fc37.x86_64//rpm",
        "@libidn2-0__2.3.4-1.fc37.x86_64//rpm",
        "@libmount-0__2.38.1-1.fc37.x86_64//rpm",
        "@libnghttp2-0__1.51.0-1.fc37.x86_64//rpm",
        "@libnl3-0__3.7.0-2.fc37.x86_64//rpm",
        "@libnsl2-0__2.0.0-4.fc37.x86_64//rpm",
        "@libpkgconf-0__1.8.0-3.fc37.x86_64//rpm",
        "@libpwquality-0__1.4.5-3.fc37.x86_64//rpm",
        "@libselinux-0__3.4-5.fc37.x86_64//rpm",
        "@libsemanage-0__3.4-5.fc37.x86_64//rpm",
        "@libsepol-0__3.4-3.fc37.x86_64//rpm",
        "@libsigsegv-0__2.14-3.fc37.x86_64//rpm",
        "@libsmartcols-0__2.38.1-1.fc37.x86_64//rpm",
        "@libssh-0__0.10.4-2.fc37.x86_64//rpm",
        "@libssh-config-0__0.10.4-2.fc37.x86_64//rpm",
        "@libssh2-0__1.10.0-5.fc37.x86_64//rpm",
        "@libtasn1-0__4.19.0-1.fc37.x86_64//rpm",
        "@libtirpc-0__1.3.3-0.fc37.x86_64//rpm",
        "@libunistring-0__1.0-2.fc37.x86_64//rpm",
        "@libutempter-0__1.2.1-7.fc37.x86_64//rpm",
        "@libuuid-0__2.38.1-1.fc37.x86_64//rpm",
        "@libverto-0__0.3.2-4.fc37.x86_64//rpm",
        "@libvirt-devel-0__8.6.0-5.fc37.x86_64//rpm",
        "@libvirt-libs-0__8.6.0-5.fc37.x86_64//rpm",
        "@libwsman1-0__2.7.1-7.fc37.x86_64//rpm",
        "@libxcrypt-0__4.4.33-4.fc37.x86_64//rpm",
        "@libxml2-0__2.10.3-2.fc37.x86_64//rpm",
        "@libzstd-0__1.5.2-3.fc37.x86_64//rpm",
        "@lz4-libs-0__1.9.4-1.fc37.x86_64//rpm",
        "@mpfr-0__4.1.0-10.fc37.x86_64//rpm",
        "@ncurses-base-0__6.3-4.20220501.fc37.x86_64//rpm",
        "@ncurses-libs-0__6.3-4.20220501.fc37.x86_64//rpm",
        "@nettle-0__3.8-2.fc37.x86_64//rpm",
        "@numactl-libs-0__2.0.14-6.fc37.x86_64//rpm",
        "@openldap-0__2.6.3-1.fc37.x86_64//rpm",
        "@openssl-libs-1__3.0.5-3.fc37.x86_64//rpm",
        "@p11-kit-0__0.24.1-3.fc37.x86_64//rpm",
        "@p11-kit-trust-0__0.24.1-3.fc37.x86_64//rpm",
        "@pam-0__1.5.2-14.fc37.x86_64//rpm",
        "@pam-libs-0__1.5.2-14.fc37.x86_64//rpm",
        "@pcre-0__8.45-1.fc37.2.x86_64//rpm",
        "@pcre2-0__10.40-1.fc37.1.x86_64//rpm",
        "@pcre2-syntax-0__10.40-1.fc37.1.x86_64//rpm",
        "@pkgconf-0__1.8.0-3.fc37.x86_64//rpm",
        "@pkgconf-m4-0__1.8.0-3.fc37.x86_64//rpm",
        "@pkgconf-pkg-config-0__1.8.0-3.fc37.x86_64//rpm",
        "@popt-0__1.19-1.fc37.x86_64//rpm",
        "@readline-0__8.2-2.fc37.x86_64//rpm",
        "@sed-0__4.8-11.fc37.x86_64//rpm",
        "@setup-0__2.14.1-2.fc37.x86_64//rpm",
        "@shadow-utils-2__4.12.3-4.fc37.x86_64//rpm",
        "@systemd-libs-0__251.10-588.fc37.x86_64//rpm",
        "@tzdata-0__2022g-1.fc37.x86_64//rpm",
        "@util-linux-0__2.38.1-1.fc37.x86_64//rpm",
        "@util-linux-core-0__2.38.1-1.fc37.x86_64//rpm",
        "@xz-libs-0__5.4.1-1.fc37.x86_64//rpm",
        "@yajl-0__2.1.0-19.fc37.x86_64//rpm",
        "@zlib-0__1.2.12-5.fc37.x86_64//rpm",
    ],
    visibility = ["//visibility:public"],
)

tar2files(
    name = "cryptsetup-libs",
    files = {
        "/usr/include": ["libcryptsetup.h"],
        "/usr/lib64": [
            "ld-linux-x86-64.so.2",
            "libargon2.so.1",
            "libblkid.so.1.1.0",
            "libblkid.so.1",
            "libc.so.6",
            "libcrypto.so.3.0.5",
            "libcrypto.so.3",
            "libcryptsetup.so.12.8.0",
            "libcryptsetup.so.12",
            "libdevmapper.so.1.02",
            "libgcc_s-12-20221121.so.1",
            "libgcc_s.so.1",
            "libjson-c.so.5.2.0",
            "libjson-c.so.5",
            "libm.so.6",
            "libpcre2-8.so.0.11.0",
            "libpcre2-8.so.0",
            "libpthread.so.0",
            "libselinux.so.1",
            "libssl.so.3.0.5",
            "libssl.so.3",
            "libudev.so.1.7.4",
            "libudev.so.1",
            "libuuid.so.1.3.0",
            "libuuid.so.1",
            "libz.so.1.2.12",
            "libz.so.1",
        ],
    },
    tar = ":cryptsetup-devel",
    visibility = ["//visibility:public"],
)

tar2files(
    name = "ld-linux-x86-64-libs",
    files = {
        "/usr/lib64": [
            "ld-linux-x86-64.so.2",
        ],
    },
    tar = ":glibc",
    visibility = ["//visibility:public"],
)

tar2files(
    name = "libvirt-libs",
    files = {
        "/usr/include/libvirt": [
            "libvirt-admin.h",
            "libvirt-common.h",
            "libvirt-domain-checkpoint.h",
            "libvirt-domain-snapshot.h",
            "libvirt-domain.h",
            "libvirt-event.h",
            "libvirt-host.h",
            "libvirt-interface.h",
            "libvirt-lxc.h",
            "libvirt-network.h",
            "libvirt-nodedev.h",
            "libvirt-nwfilter.h",
            "libvirt-qemu.h",
            "libvirt-secret.h",
            "libvirt-storage.h",
            "libvirt-stream.h",
            "libvirt.h",
            "virterror.h",
        ],
        "/usr/lib64": [
            "ld-linux-x86-64.so.2",
            "libacl.so.1",
            "libacl.so.1.1.2301",
            "libattr.so.1",
            "libattr.so.1.1.2501",
            "libaudit.so.1",
            "libaudit.so.1.0.0",
            "libblkid.so.1",
            "libblkid.so.1.1.0",
            "libc.so.6",
            "libcap-ng.so.0",
            "libcap-ng.so.0.0.0",
            "libcom_err.so.2",
            "libcom_err.so.2.1",
            "libcrypt.so.2",
            "libcrypt.so.2.0.0",
            "libcrypto.so.3",
            "libcrypto.so.3.0.5",
            "libcurl.so.4",
            "libcurl.so.4.8.0",
            "libffi.so.8",
            "libffi.so.8.1.0",
            "libgcc_s-12-20221121.so.1",
            "libgcc_s.so.1",
            "libgcrypt.so.20",
            "libgcrypt.so.20.4.1",
            "libgio-2.0.so.0",
            "libgio-2.0.so.0.7400.1",
            "libglib-2.0.so.0",
            "libglib-2.0.so.0.7400.1",
            "libgmodule-2.0.so.0",
            "libgmodule-2.0.so.0.7400.1",
            "libgmp.so.10",
            "libgmp.so.10.4.1",
            "libgnutls.so.30",
            "libgnutls.so.30.34.2",
            "libgobject-2.0.so.0",
            "libgobject-2.0.so.0.7400.1",
            "libgpg-error.so.0",
            "libgpg-error.so.0.33.1",
            "libgssapi_krb5.so.2",
            "libgssapi_krb5.so.2.2",
            "libhogweed.so.6",
            "libhogweed.so.6.5",
            "libidn2.so.0",
            "libidn2.so.0.3.8",
            "libk5crypto.so.3",
            "libk5crypto.so.3.1",
            "libkeyutils.so.1",
            "libkeyutils.so.1.9",
            "libkrb5.so.3",
            "libkrb5.so.3.3",
            "libkrb5support.so.0",
            "libkrb5support.so.0.1",
            "liblz4.so.1",
            "liblz4.so.1.9.4",
            "liblzma.so.5",
            "liblzma.so.5.4.1",
            "libm.so.6",
            "libmount.so.1",
            "libmount.so.1.1.0",
            "libnettle.so.8",
            "libnettle.so.8.5",
            "libnghttp2.so.14",
            "libnghttp2.so.14.24.1",
            "libnl-3.so.200",
            "libnl-3.so.200.26.0",
            "libnuma.so.1",
            "libnuma.so.1.0.0",
            "libp11-kit.so.0",
            "libp11-kit.so.0.3.0",
            "libpcre2-8.so.0",
            "libpcre2-8.so.0.11.0",
            "libresolv.so.2",
            "libsasl2.so.3",
            "libsasl2.so.3.0.0",
            "libselinux.so.1",
            "libssh.so.4",
            "libssh.so.4.9.4",
            "libssh2.so.1",
            "libssh2.so.1.0.1",
            "libssl.so.3",
            "libssl.so.3.0.5",
            "libtasn1.so.6",
            "libtasn1.so.6.6.3",
            "libtirpc.so.3",
            "libtirpc.so.3.0.0",
            "libunistring.so.2",
            "libunistring.so.2.2.0",
            "libvirt-lxc.so.0",
            "libvirt-lxc.so.0.8006.0",
            "libvirt-qemu.so.0",
            "libvirt-qemu.so.0.8006.0",
            "libvirt.so.0",
            "libvirt.so.0.8006.0",
            "libwsman.so.1",
            "libwsman.so.1.0.0",
            "libwsman_client.so.5",
            "libwsman_client.so.5.0.0",
            "libwsman_curl_client_transport.so.1",
            "libwsman_curl_client_transport.so.1.0.0",
            "libxml2.so.2",
            "libxml2.so.2.10.3",
            "libyajl.so.2",
            "libyajl.so.2.1.0",
            "libz.so.1",
            "libz.so.1.2.12",
        ],
    },
    tar = ":libvirt-devel",
    visibility = ["//visibility:public"],
)