| package(default_visibility = ["//visibility:public"]) |
| |
| load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar", "pkg_deb") |
| |
| load("/tools/rules/heron_api", "heron_api_files") |
| |
| load("/tools/rules/heron_client", "heron_client_bin_files") |
| load("/tools/rules/heron_client", "heron_client_conf_files") |
| load("/tools/rules/heron_client", "heron_client_lib_third_party_files") |
| load("/tools/rules/heron_client", "heron_client_lib_scheduler_files") |
| load("/tools/rules/heron_client", "heron_client_lib_packing_files") |
| load("/tools/rules/heron_client", "heron_client_lib_statemgr_files") |
| load("/tools/rules/heron_client", "heron_client_lib_uploader_files") |
| |
| load("/tools/rules/heron_core", "heron_core_files") |
| load("/tools/rules/heron_core", "heron_core_bin_files") |
| load("/tools/rules/heron_core", "heron_core_conf_files") |
| load("/tools/rules/heron_core", "heron_core_lib_instance_files") |
| load("/tools/rules/heron_core", "heron_core_lib_scheduler_files") |
| load("/tools/rules/heron_core", "heron_core_lib_metricsmgr_files") |
| load("/tools/rules/heron_core", "heron_core_lib_metricscachemgr_files") |
| load("/tools/rules/heron_core", "heron_core_lib_packing_files") |
| load("/tools/rules/heron_core", "heron_core_lib_statemgr_files") |
| load("/tools/rules/heron_core", "heron_core_lib_ckptmgr_files") |
| load("/tools/rules/heron_core", "heron_core_lib_statefulstorage_files") |
| |
| load("/tools/rules/heron_tools", "heron_tools_files") |
| load("/tools/rules/heron_tools", "heron_tools_bin_files") |
| load("/tools/rules/heron_tools", "heron_tools_conf_files") |
| load("/tools/rules/heron_tools", "heron_tools_lib_files") |
| load("/tools/rules/heron_examples", "heron_examples_files") |
| |
| generated_release_files = [ |
| "release.yaml", |
| ] |
| |
| generated_pyheron_egg_file = [ |
| "pyheron.whl", |
| ] |
| |
| filegroup( |
| name = "release_files", |
| srcs = generated_release_files, |
| ) |
| |
| filegroup( |
| name = "tarpkgs", |
| srcs = [ |
| ":heron-api", |
| ":heron-core", |
| ":heron-tools", |
| ":heron-client", |
| ], |
| ) |
| |
| filegroup( |
| name = "binpkgs", |
| srcs = [ |
| ":heron-api-install.sh", |
| ":heron-client-install.sh", |
| ":heron-tools-install.sh", |
| ], |
| ) |
| |
| filegroup( |
| name = "pypkgs", |
| srcs = [ |
| ":generate-pyheron-package", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron core packaging |
| ################################################################################ |
| pkg_tar( |
| name = "heron-core", |
| extension = "tar.gz", |
| files = generated_release_files, |
| deps = [ |
| ":heron-core-bin", |
| ":heron-core-lib-scheduler", |
| ":heron-core-lib-packing", |
| ":heron-core-lib-metricsmgr", |
| ":heron-core-lib-metricscachemgr", |
| ":heron-core-lib-statemgr", |
| ":heron-core-lib-instance", |
| ":heron-core-lib-ckptmgr", |
| ":heron-core-lib-statefulstorage", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-bin", |
| package_dir = "heron-core/bin", |
| files = heron_core_bin_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-scheduler", |
| package_dir = "heron-core/lib/scheduler", |
| files = heron_core_lib_scheduler_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-packing", |
| package_dir = "heron-core/lib/packing", |
| files = heron_core_lib_packing_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-metricsmgr", |
| package_dir = "heron-core/lib/metricsmgr", |
| files = heron_core_lib_metricsmgr_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-metricscachemgr", |
| package_dir = "heron-core/lib/metricscachemgr", |
| files = heron_core_lib_metricscachemgr_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-statemgr", |
| package_dir = "heron-core/lib/statemgr", |
| files = heron_core_lib_statemgr_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-instance", |
| package_dir = "heron-core/lib/instance", |
| files = heron_core_lib_instance_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-ckptmgr", |
| package_dir = "heron-core/lib/ckptmgr", |
| files = heron_core_lib_ckptmgr_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-statefulstorage", |
| package_dir = "heron-core/lib/statefulstorage", |
| files = heron_core_lib_statefulstorage_files(), |
| ) |
| |
| ################################################################################ |
| # Heron tools packaging |
| ################################################################################ |
| pkg_tar( |
| name = "heron-tools-bin", |
| package_dir = "bin", |
| files = heron_tools_bin_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-conf", |
| package_dir = "conf", |
| files = heron_tools_conf_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-tools", |
| extension = "tar.gz", |
| files = generated_release_files, |
| deps = [ |
| ":heron-tools-bin", |
| ":heron-tools-conf", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron client packaging |
| ################################################################################ |
| pkg_tar( |
| name = "heron-client-bin", |
| package_dir = "bin", |
| files = heron_client_bin_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-lib-scheduler", |
| package_dir = "lib/scheduler", |
| files = heron_client_lib_scheduler_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-lib-packing", |
| package_dir = "lib/packing", |
| files = heron_client_lib_packing_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-lib-statemgr", |
| package_dir = "lib/statemgr", |
| files = heron_client_lib_statemgr_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-lib-uploader", |
| package_dir = "lib/uploader", |
| files = heron_client_lib_uploader_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-lib-third_party", |
| package_dir = "lib/third_party", |
| files = heron_client_lib_third_party_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-examples", |
| package_dir = "examples", |
| files = heron_examples_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-local", |
| package_dir = "conf/local", |
| files = [ |
| "//heron/config/src/yaml:conf-local-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-slurm", |
| package_dir = "conf/slurm", |
| files = [ |
| "//heron/config/src/yaml:conf-slurm-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-aurora", |
| package_dir = "conf/aurora", |
| files = [ |
| "//heron/config/src/yaml:conf-aurora-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-yarn", |
| package_dir = "conf/yarn", |
| files = [ |
| "//heron/config/src/yaml:conf-yarn-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-mesos", |
| package_dir = "conf/mesos", |
| files = [ |
| "//heron/config/src/yaml:conf-mesos-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-marathon", |
| package_dir = "conf/marathon", |
| files = [ |
| "//heron/config/src/yaml:conf-marathon-yaml", |
| ] |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf-kubernetes", |
| package_dir = "conf/kubernetes", |
| files = [ |
| "//heron/config/src/yaml:conf-kubernetes-yaml", |
| ] |
| ) |
| |
| pkg_tar( |
| name = "heron-client-conf", |
| package_dir = "conf", |
| files = heron_client_conf_files(), |
| ) |
| |
| pkg_tar( |
| name = "heron-client-dist", |
| package_dir = "dist", |
| files = [":heron-core"], |
| ) |
| |
| pkg_tar( |
| name = "heron-client", |
| extension = "tar.gz", |
| files = generated_release_files, |
| deps = [ |
| ":heron-client-bin", |
| ":heron-client-conf", |
| ":heron-client-conf-local", |
| ":heron-client-conf-aurora", |
| ":heron-client-conf-slurm", |
| ":heron-client-conf-yarn", |
| ":heron-client-conf-mesos", |
| ":heron-client-conf-marathon", |
| ":heron-client-conf-kubernetes", |
| ":heron-client-dist", |
| ":heron-client-examples", |
| ":heron-client-lib-third_party", |
| ":heron-client-lib-scheduler", |
| ":heron-client-lib-packing", |
| ":heron-client-lib-statemgr", |
| ":heron-client-lib-uploader", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron API packaging |
| ################################################################################ |
| pkg_tar( |
| name = "heron-api", |
| extension = "tar.gz", |
| files = generated_release_files + heron_api_files(), |
| ) |
| |
| ################################################################################ |
| # Heron python packaging |
| ################################################################################ |
| genrule( |
| name = "generate-pyheron-package", |
| srcs = [ |
| "pyheron/requirements.txt", |
| "pyheron/setup.py.template", |
| "pyheron/README.txt", |
| ] + generated_release_files, |
| outs = generated_pyheron_egg_file, |
| stamp = 1, |
| tools = [ |
| "//heron/pyheron/src/python:pyheron-package" |
| ], |
| cmd = "\n".join([ |
| 'export OUTPUT_DIR=$$(pwd)/$(@D)', |
| 'export RELEASE_FILE_DIR=$$(pwd)', |
| 'export TMP_DIR=$$(mktemp -d -t pyheron.XXXXX)', |
| 'echo $$TMP_DIR', |
| 'export PYHERON_DIR=$$TMP_DIR/pyheron', |
| 'export PYHERON_UNZIP=$$TMP_DIR/unzipped', |
| 'export HERON_VERSION=$$(grep version $$RELEASE_FILE_DIR/$(location :release.yaml) | awk \'{print $$3}\')', |
| 'export HERON_VERSION=$$(echo $$HERON_VERSION | sed -e "s/^\'//" -e "s/\'$$//")', |
| 'export HERON_VERSION=$$(echo $$HERON_VERSION | grep "[0-9]*\.[0-9]*\.[0-9]*")', |
| 'export HERON_VERSION=$$([[ -z $$HERON_VERSION ]] && echo "0.0.0" || echo $$HERON_VERSION)', |
| 'echo $$HERON_VERSION', |
| 'mkdir -p $$TMP_DIR $$PYHERON_DIR', |
| 'unzip -qd $$PYHERON_UNZIP $(location //heron/pyheron/src/python:pyheron-package)', |
| 'find $$PYHERON_UNZIP -name "*.pyc" -exec rm {} \;', |
| 'mv $$PYHERON_UNZIP/heron/pyheron/src/python $$PYHERON_DIR/pyheron', |
| 'rm -rf $$PYHERON_UNZIP/heron/pyheron', |
| 'mv $$PYHERON_UNZIP/heron $$PYHERON_DIR/heron', |
| 'cp $(SRCS) $$PYHERON_DIR', |
| 'echo "PyHeron toplevel directory: $$PYHERON_DIR"', |
| 'cd $$PYHERON_DIR', |
| 'sed "s/VERSION/$$HERON_VERSION/" setup.py.template > setup.py', |
| 'rm setup.py.template', |
| '/usr/bin/env python2.7 setup.py sdist', |
| '/usr/bin/env python2.7 setup.py bdist_wheel', |
| 'ls -l $$PYHERON_DIR/dist', |
| 'cp $$PYHERON_DIR/dist/pyheron-*-py2-*.whl $$OUTPUT_DIR', |
| 'cp $$PYHERON_DIR/dist/pyheron-*.tar.gz $$OUTPUT_DIR', |
| 'touch $$OUTPUT_DIR/pyheron.whl', |
| 'rm -rf $$TMP_DIR', |
| ]), |
| ) |
| |
| ################################################################################ |
| # Heron self installed binaries |
| ################################################################################ |
| sh_binary( |
| name = "package-info-generator", |
| srcs = ["package_info_generator.sh"], |
| ) |
| |
| genrule( |
| name = "generate-package-info", |
| outs = generated_release_files, |
| cmd = "$(location :package-info-generator) $$(find -L . -name '*status*.txt') >$@", |
| stamp = 1, |
| tools = [":package-info-generator"], |
| ) |
| |
| genrule( |
| name = "generate-client-launcher", |
| srcs = ["client_template_bin.sh", "bin_common.sh"] + generated_release_files, |
| outs = ["client_launcher_bin.sh"], |
| cmd = """ |
| release_info="$$(cat $(location :release.yaml))" |
| bin_common="$$(cat $(location bin_common.sh))" |
| template="$$(cat $(location client_template_bin.sh))" |
| echo "$${bin_common}\n\n$${template//%release_info%/$${release_info}}" >$@ |
| """, |
| ) |
| |
| genrule( |
| name = "generate-tools-launcher", |
| srcs = ["tools_template_bin.sh", "bin_common.sh"] + generated_release_files, |
| outs = ["tools_launcher_bin.sh"], |
| cmd = """ |
| release_info="$$(cat $(location :release.yaml))" |
| bin_common="$$(cat $(location bin_common.sh))" |
| template="$$(cat $(location tools_template_bin.sh))" |
| echo "$${bin_common}\n\n$${template//%release_info%/$${release_info}}" >$@ |
| """, |
| ) |
| |
| genrule( |
| name = "generate-api-launcher", |
| srcs = ["api_template_bin.sh", "bin_common.sh"] + generated_release_files, |
| outs = ["api_launcher_bin.sh"], |
| cmd = """ |
| release_info="$$(cat $(location :release.yaml))" |
| bin_common="$$(cat $(location bin_common.sh))" |
| template="$$(cat $(location api_template_bin.sh))" |
| echo "$${bin_common}\n\n$${template//%release_info%/$${release_info}}" >$@ |
| """, |
| ) |
| |
| load("self_extract_binary", "self_extract_binary") |
| |
| self_extract_binary( |
| name = "heron-api-install.sh", |
| flatten_resources = [ |
| ":heron-api", |
| ], |
| launcher = ":api_launcher_bin.sh", |
| ) |
| |
| self_extract_binary( |
| name = "heron-client-install.sh", |
| flatten_resources = [ |
| ":heron-client", |
| ], |
| launcher = ":client_launcher_bin.sh", |
| ) |
| |
| self_extract_binary( |
| name = "heron-tools-install.sh", |
| flatten_resources = [ |
| ":heron-tools", |
| ], |
| launcher = ":tools_launcher_bin.sh", |
| ) |
| |
| filegroup( |
| name = "api-template-bin.sh", |
| srcs = ["api_template_bin.sh"], |
| ) |
| |
| filegroup( |
| name = "client-template-bin.sh", |
| srcs = ["client_template_bin.sh"], |
| ) |
| |
| filegroup( |
| name = "tools-template-bin.sh", |
| srcs = ["tools_template_bin.sh"], |
| ) |
| |
| filegroup( |
| name = "bin-common.sh", |
| srcs = ["bin_common.sh"], |
| ) |