| package(default_visibility = ["//visibility:public"]) |
| |
| load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar", "pkg_deb") |
| |
| generated_release_files = [ |
| "release.yaml", |
| ] |
| |
| generated_heronpy_egg_file = [ |
| "heronpy.whl", |
| ] |
| |
| filegroup( |
| name = "release_files", |
| srcs = generated_release_files, |
| ) |
| |
| filegroup( |
| name = "tarpkgs", |
| srcs = [ |
| ":heron-tools", |
| ":heron-core", |
| ":heron", |
| ], |
| ) |
| |
| filegroup( |
| name = "binpkgs", |
| srcs = [ |
| ":heron-install.sh", |
| ], |
| ) |
| |
| filegroup( |
| name = "testpkgs", |
| srcs = [ |
| ":heron-tests-install.sh", |
| ], |
| ) |
| |
| filegroup( |
| name = "pypkgs", |
| srcs = [ |
| ":generate-heronpy-package", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron core packaging - used for docker images |
| ################################################################################ |
| pkg_tar( |
| name = "heron-core", |
| extension = "tar.gz", |
| srcs = generated_release_files, |
| deps = [ |
| ":heron-core-bin", |
| ":heron-core-lib-scheduler", |
| ":heron-core-lib-packing", |
| ":heron-core-lib-healthmgr", |
| ":heron-core-lib-metricsmgr", |
| ":heron-core-lib-metricscachemgr", |
| ":heron-core-lib-statemgr", |
| ":heron-core-lib-instance", |
| ":heron-core-lib-ckptmgr", |
| ":heron-core-lib-statefulstorage", |
| ":heron-core-lib-downloader", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-bin", |
| package_dir = "heron-core/bin", |
| srcs = [ |
| "//heron/executor/src/python:heron-executor", |
| "//heron/downloaders/src/shell:heron-downloader", |
| "//heron/downloaders/src/shell:heron-downloader-config", |
| "//heron/instance/src/python:heron-python-instance", |
| "//heron/instance/src/cpp:heron-cpp-instance", |
| "//heron/shell/src/python:heron-shell", |
| "//heron/stmgr/src/cpp:heron-stmgr", |
| "//heron/tmaster/src/cpp:heron-tmaster", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-scheduler", |
| package_dir = "heron-core/lib/scheduler", |
| srcs = [ |
| "//heron/scheduler-core/src/java:heron-scheduler", |
| "//heron/schedulers/src/java:heron-local-scheduler", |
| "//heron/schedulers/src/java:heron-kubernetes-scheduler", |
| "//heron/schedulers/src/java:heron-marathon-scheduler", |
| "//heron/schedulers/src/java:heron-mesos-scheduler", |
| "//heron/schedulers/src/java:heron-nomad-scheduler", |
| "//heron/schedulers/src/java:heron-slurm-scheduler", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-packing", |
| package_dir = "heron-core/lib/packing", |
| srcs = [ |
| "//heron/packing/src/java:heron-roundrobin-packing", |
| "//heron/packing/src/java:heron-binpacking-packing" |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-healthmgr", |
| package_dir = "heron-core/lib/healthmgr", |
| srcs = [ |
| "//heron/healthmgr/src/java:heron-healthmgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-metricsmgr", |
| package_dir = "heron-core/lib/metricsmgr", |
| srcs = [ |
| "//heron/metricsmgr/src/java:heron-metricsmgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-metricscachemgr", |
| package_dir = "heron-core/lib/metricscachemgr", |
| srcs = [ |
| "//heron/metricscachemgr/src/java:heron-metricscachemgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-statemgr", |
| package_dir = "heron-core/lib/statemgr", |
| srcs = [ |
| "//heron/statemgrs/src/java:heron-localfs-statemgr", |
| "//heron/statemgrs/src/java:heron-zookeeper-statemgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-instance", |
| package_dir = "heron-core/lib/instance", |
| srcs = [ |
| "//heron/instance/src/java:heron-instance", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-ckptmgr", |
| package_dir = "heron-core/lib/ckptmgr", |
| srcs = [ |
| "//heron/ckptmgr/src/java:heron-ckptmgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-statefulstorage", |
| package_dir = "heron-core/lib/statefulstorage", |
| srcs = [ |
| "//heron/statefulstorages/src/java:heron-localfs-statefulstorage", |
| "//heron/statefulstorages/src/java:heron-hdfs-statefulstorage", |
| "//heron/statefulstorages/src/java:heron-dlog-statefulstorage", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-core-lib-downloader", |
| package_dir = "heron-core/lib/downloaders", |
| srcs = [ |
| "//heron/downloaders/src/java:heron-downloader", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron tools packaging - used for docker images |
| ################################################################################ |
| pkg_tar( |
| name = "heron-tools-release", |
| package_dir = "heron-tools", |
| srcs = generated_release_files, |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-bin", |
| package_dir = "heron-tools/bin", |
| srcs = [ |
| "//heron/tools/apiserver/src/shell:heron-apiserver", |
| "//heron/tools/cli/src/python:heron", |
| "//heron/tools/explorer/src/python:heron-explorer", |
| "//heron/tools/tracker/src/python:heron-tracker", |
| "//heron/tools/ui/src/python:heron-ui", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-lib-api", |
| package_dir = "heron-tools/lib/api", |
| srcs = [ |
| "//heron/tools/apiserver/src/java:heron-apiserver", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-lib-third_party", |
| package_dir = "heron-tools/lib/third_party", |
| srcs = [ |
| "@com_google_protobuf//:protobuf_java", |
| "@org_slf4j_slf4j_api//jar", |
| "@org_slf4j_slf4j_jdk14//jar", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-lib-uploader", |
| package_dir = "heron-tools/lib/uploader", |
| srcs = [ |
| "//heron/uploaders/src/java:heron-null-uploader", |
| "//heron/uploaders/src/java:heron-localfs-uploader", |
| "//heron/uploaders/src/java:heron-s3-uploader", |
| "//heron/uploaders/src/java:heron-hdfs-uploader", |
| "//heron/uploaders/src/java:heron-scp-uploader", |
| "//heron/uploaders/src/java:heron-gcs-uploader", |
| "//heron/uploaders/src/java:heron-dlog-uploader", |
| "//heron/uploaders/src/java:heron-http-uploader", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-conf", |
| package_dir = "heron-tools/conf", |
| srcs = [ |
| "//heron/tools/config/src/yaml:tracker-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tools-cluster-conf", |
| strip_prefix = "/heron/config/src/yaml/conf", |
| package_dir = "heron-tools/conf", |
| srcs = [ |
| "//heron/config/src/yaml:conf-yaml" |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tools", |
| extension = "tar.gz", |
| deps = [ |
| ":heron-tools-release", |
| ":heron-tools-bin", |
| ":heron-tools-lib-api", |
| ":heron-tools-lib-third_party", |
| ":heron-tools-lib-uploader", |
| ":heron-tools-conf", |
| ":heron-tools-cluster-conf", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron packaging |
| ################################################################################ |
| pkg_tar( |
| name = "heron-bin", |
| package_dir = "bin", |
| srcs = [ |
| "//heron/downloaders/src/shell:heron-downloader", |
| "//heron/downloaders/src/shell:heron-downloader-config", |
| "//heron/tools/cli/src/python:heron", |
| "//heron/tools/explorer/src/python:heron-explorer", |
| "//heron/tools/admin/src/python:heron-admin", |
| "//heron/tools/tracker/src/python:heron-tracker", |
| "//heron/tools/ui/src/python:heron-ui", |
| "//heron/tools/apiserver/src/shell:heron-apiserver", |
| "//third_party/nomad:heron-nomad", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-bolt", |
| package_dir = "include/bolt", |
| srcs = ["//heron/api/src/cpp:cxx-bolt-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-config", |
| package_dir = "include/config", |
| srcs = ["//heron/api/src/cpp:cxx-config-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-exceptions", |
| package_dir = "include/exceptions", |
| srcs = ["//heron/api/src/cpp:cxx-exceptions-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-metric", |
| package_dir = "include/metric", |
| srcs = ["//heron/api/src/cpp:cxx-metric-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-serializer", |
| package_dir = "include/serializer", |
| srcs = ["//heron/api/src/cpp:cxx-serializer-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-spout", |
| package_dir = "include/spout", |
| srcs = ["//heron/api/src/cpp:cxx-spout-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-topology", |
| package_dir = "include/topology", |
| srcs = ["//heron/api/src/cpp:cxx-topology-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-tuple", |
| package_dir = "include/tuple", |
| srcs = ["//heron/api/src/cpp:cxx-tuple-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-include-utils", |
| package_dir = "include/utils", |
| srcs = ["//heron/api/src/cpp:cxx-utils-hdrs"], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-scheduler", |
| package_dir = "lib/scheduler", |
| srcs = [ |
| "//heron/scheduler-core/src/java:heron-scheduler", |
| "//heron/schedulers/src/java:heron-local-scheduler", |
| "//heron/schedulers/src/java:heron-aurora-scheduler", |
| "//heron/schedulers/src/java:heron-slurm-scheduler", |
| "//heron/schedulers/src/java:heron-yarn-scheduler", |
| "//heron/schedulers/src/java:heron-mesos-scheduler", |
| "//heron/schedulers/src/java:heron-marathon-scheduler", |
| "//heron/schedulers/src/java:heron-kubernetes-scheduler", |
| "//heron/schedulers/src/java:heron-nomad-scheduler", |
| "//heron/packing/src/java:heron-roundrobin-packing", |
| "//heron/packing/src/java:heron-binpacking-packing", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-metricscachemgr", |
| package_dir = "lib/metricscachemgr", |
| srcs = [ |
| "//heron/metricscachemgr/src/java:heron-metricscachemgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-packing", |
| package_dir = "lib/packing", |
| srcs = [ |
| "//heron/packing/src/java:heron-roundrobin-packing", |
| "//heron/packing/src/java:heron-binpacking-packing", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-statemgr", |
| package_dir = "lib/statemgr", |
| srcs = [ |
| "//heron/statemgrs/src/java:heron-zookeeper-statemgr", |
| "//heron/statemgrs/src/java:heron-localfs-statemgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-uploader", |
| package_dir = "lib/uploader", |
| srcs = [ |
| "//heron/uploaders/src/java:heron-null-uploader", |
| "//heron/uploaders/src/java:heron-localfs-uploader", |
| "//heron/uploaders/src/java:heron-s3-uploader", |
| "//heron/uploaders/src/java:heron-hdfs-uploader", |
| "//heron/uploaders/src/java:heron-scp-uploader", |
| "//heron/uploaders/src/java:heron-gcs-uploader", |
| "//heron/uploaders/src/java:heron-dlog-uploader", |
| "//heron/uploaders/src/java:heron-http-uploader" |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-downloader", |
| package_dir = "lib/downloaders", |
| srcs = [ |
| "//heron/downloaders/src/java:heron-downloader", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-healthmgr", |
| package_dir = "lib/healthmgr", |
| srcs = [ |
| "//heron/healthmgr/src/java:heron-healthmgr", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-third_party", |
| package_dir = "lib/third_party", |
| srcs = [ |
| "@com_google_protobuf//:protobuf_java", |
| "@org_slf4j_slf4j_api//jar", |
| "@org_slf4j_slf4j_jdk14//jar", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-lib-api", |
| package_dir = "lib/api", |
| srcs = [ |
| "//heron/api/src/cpp:cxx-api", |
| "//heron/api/src/java:api-java", |
| "//heron/api/src/scala:api-scala", |
| "//heron/tools/apiserver/src/java:heron-apiserver", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-examples", |
| package_dir = "examples", |
| srcs = [ |
| "//eco-storm-examples/src/java:storm-eco-examples", |
| "//eco-storm-examples/src/java:storm-eco-examples-support", |
| "//eco-heron-examples/src/java:heron-eco-examples", |
| "//eco-heron-examples/src/java:heron-eco-examples-support", |
| "//examples/src/java:heron-api-examples", |
| "//examples/src/java:heron-streamlet-examples", |
| "//examples/src/scala:heron-streamlet-scala-examples", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-conf", |
| strip_prefix = "/heron/config/src/yaml/conf", |
| package_dir = "conf", |
| srcs = [ |
| "//heron/config/src/yaml:conf-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-conf-tracker", |
| strip_prefix = "/heron/tools/config/src/yaml/tracker", |
| package_dir = "conf", |
| srcs = [ |
| "//heron/tools/config/src/yaml:tracker-yaml", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-dist", |
| package_dir = "dist", |
| srcs = [":heron-core"], |
| ) |
| |
| pkg_tar( |
| name = "heron-simulator", |
| package_dir = "lib/simulator", |
| srcs = [ |
| "//heron/simulator/src/java:simulator-java", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron", |
| extension = "tar.gz", |
| srcs = generated_release_files, |
| deps = [ |
| ":heron-bin", |
| ":heron-conf", |
| ":heron-conf-tracker", |
| ":heron-dist", |
| ":heron-examples", |
| ":heron-include-bolt", |
| ":heron-include-config", |
| ":heron-include-exceptions", |
| ":heron-include-metric", |
| ":heron-include-serializer", |
| ":heron-include-spout", |
| ":heron-include-topology", |
| ":heron-include-tuple", |
| ":heron-include-utils", |
| ":heron-lib-api", |
| ":heron-lib-downloader", |
| ":heron-lib-metricscachemgr", |
| ":heron-lib-packing", |
| ":heron-lib-scheduler", |
| ":heron-lib-statemgr", |
| ":heron-lib-third_party", |
| ":heron-lib-uploader", |
| ":heron-simulator", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron test packaging |
| ################################################################################ |
| pkg_tar( |
| name = "heron-tests-bin", |
| package_dir = "bin", |
| srcs = [ |
| "//integration_test/src/python/http_server:http-server", |
| "//integration_test/src/python/test_runner:test-runner", |
| "//integration_test/src/python/topology_test_runner:topology-test-runner", |
| ] |
| ) |
| |
| pkg_tar( |
| name = "heron-tests-data-scala", |
| package_dir = "data/scala", |
| srcs = [ |
| "//integration_test/src/scala:test-data-files", |
| ], |
| strip_prefix = '/integration_test/src/scala/org/apache/heron/integration_test/topology/' |
| ) |
| |
| pkg_tar( |
| name = "heron-tests-data-java", |
| package_dir = "data/java", |
| srcs = [ |
| "//integration_test/src/java:test-data-files", |
| ], |
| strip_prefix = '/integration_test/src/java/org/apache/heron/integration_test/topology/' |
| ) |
| |
| pkg_tar( |
| name = "heron-tests-data-topology-java", |
| package_dir = "data/java/topology_test", |
| srcs = [ |
| "//integration_test/src/java:topology-test-data-files", |
| ], |
| strip_prefix = '/integration_test/src/java/org/apache/heron/integration_topology_test/topology/' |
| ) |
| |
| pkg_tar( |
| name = "heron-tests-data-python", |
| package_dir = "data/python", |
| srcs = [ |
| "//integration_test/src/python/integration_test/topology:test-data-files", |
| ], |
| strip_prefix = '/integration_test/src/python/integration_test/topology/' |
| ) |
| |
| pkg_tar( |
| name = "heron-tests-lib", |
| package_dir = "lib", |
| srcs = [ |
| "//integration_test/src/scala:scala-integration-tests", |
| "//integration_test/src/java:integration-tests", |
| "//integration_test/src/java:integration-topology-tests", |
| "//integration_test/src/python/integration_test/topology:heron_integ_topology", |
| ], |
| ) |
| |
| pkg_tar( |
| name = "heron-tests", |
| extension = "tar.gz", |
| srcs = generated_release_files, |
| deps = [ |
| ":heron-tests-bin", |
| ":heron-tests-data-scala", |
| ":heron-tests-data-java", |
| ":heron-tests-data-topology-java", |
| ":heron-tests-data-python", |
| ":heron-tests-lib", |
| ], |
| ) |
| |
| ################################################################################ |
| # Heron python packaging |
| # |
| # When a new python module is being added into the heronpy package, please ensure |
| # that its dependencies are being added into the packaging as well. Sometimes, |
| # the dependencies might already exist. For example, |
| # heron/api depends on proto |
| # heron/streamlet depends on proto and heron/api |
| # |
| # Hence the python package consists of the dependencies proto and heron/api. |
| # Note that the heron/api is exported as external API for heronpy and it is |
| # duplicated for dependency for heron/streamlet. |
| ################################################################################ |
| genrule( |
| name = "generate-heronpy-package", |
| srcs = [ |
| "heronpy/requirements.txt", |
| "heronpy/setup.py.template", |
| "heronpy/README.txt", |
| ] + generated_release_files, |
| outs = generated_heronpy_egg_file, |
| stamp = 1, |
| tools = [ |
| "//heronpy/api:heron-python-package", |
| "//heronpy/streamlet:heron-python-streamlet-api-package", |
| "//heronpy/connectors:heron-pythonconnectors-package", |
| "//heronpy/proto:proto-py-package", |
| ], |
| cmd = "\n".join([ |
| 'export OUTPUT_DIR=$$(pwd)/$(@D)', |
| 'export RELEASE_FILE_DIR=$$(pwd)', |
| 'export TMP_DIR=$$(mktemp -d -t heronpy.XXXXX)', |
| 'echo $$TMP_DIR', |
| 'export HERONPY_DIR=$$TMP_DIR/heronpy', |
| 'export HERONPYAPI_UNZIP=$$TMP_DIR/heronapiunzip', |
| 'export HERONPYSTREAMLET_UNZIP=$$TMP_DIR/heronstreamletunzip', |
| 'export HERONPYCONNECTORS_UNZIP=$$TMP_DIR/heronconnectorsunzip', |
| 'export HERONPYPROTO_UNZIP=$$TMP_DIR/heronprotounzip', |
| '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 $$HERONPY_DIR', |
| 'unzip -qd $$HERONPYAPI_UNZIP $(location //heronpy/api:heron-python-package)', |
| 'unzip -qd $$HERONPYSTREAMLET_UNZIP $(location //heronpy/streamlet:heron-python-streamlet-api-package)', |
| 'unzip -qd $$HERONPYCONNECTORS_UNZIP $(location //heronpy/connectors:heron-pythonconnectors-package)', |
| 'unzip -qd $$HERONPYPROTO_UNZIP $(location //heronpy/proto:proto-py-package)', |
| 'find $$HERONPYAPI_UNZIP -name "*.pyc" -exec rm {} \;', |
| 'find $$HERONPYSTREAMLET_UNZIP -name "*.pyc" -exec rm {} \;', |
| 'find $$HERONPYCONNECTORS_UNZIP -name "*.pyc" -exec rm {} \;', |
| 'find $$HERONPYPROTO_UNZIP -name "*.pyc" -exec rm {} \;', |
| 'mkdir -p $$HERONPY_DIR/heronpy/api', |
| 'mkdir -p $$HERONPY_DIR/heronpy/streamlet', |
| 'mkdir -p $$HERONPY_DIR/heronpy/connectors', |
| 'mkdir -p $$HERONPY_DIR/heronpy/proto', |
| 'mv $$HERONPYAPI_UNZIP/heronpy/api $$HERONPY_DIR/heronpy/', |
| 'mv $$HERONPYSTREAMLET_UNZIP/heronpy/streamlet $$HERONPY_DIR/heronpy/', |
| 'mv $$HERONPYCONNECTORS_UNZIP/heronpy/connectors $$HERONPY_DIR/heronpy/', |
| 'mv $$HERONPYPROTO_UNZIP/heronpy/proto $$HERONPY_DIR/heronpy/', |
| 'echo "__import__(\'pkg_resources\').declare_namespace(__name__)" > $$HERONPY_DIR/heronpy/__init__.py', |
| 'rm -rf $$HERONPYAPI_UNZIP/heron/api', |
| 'rm -rf $$HERONPYSTREAMLET_UNZIP/heron/streamlet', |
| 'rm -rf $$HERONPYCONNECTORS_UNZIP/heron/connectors', |
| 'rm -rf $$HERONPYPROTO_UNZIP/heron/proto', |
| 'cp -R $(SRCS) $$HERONPY_DIR', |
| 'echo "Heron Python toplevel directory: $$HERONPY_DIR"', |
| 'cd $$HERONPY_DIR', |
| 'sed "s/VERSION/$$HERON_VERSION/" setup.py.template > setup.py', |
| 'find heronpy -type f -name "*.bak" -delete', |
| 'rm setup.py.template', |
| 'tree $$HERONPY_DIR', |
| '/usr/bin/env python2.7 setup.py sdist', |
| '/usr/bin/env python2.7 setup.py bdist_wheel --universal', |
| 'cd -', |
| 'ls -l $$HERONPY_DIR/dist', |
| 'cp $$HERONPY_DIR/dist/heronpy-*-py2.py3-*.whl $$OUTPUT_DIR', |
| 'cp $$HERONPY_DIR/dist/heronpy-*-py2.py3-*.whl "$@"', |
| 'cp $$HERONPY_DIR/dist/heronpy-*.tar.gz $$OUTPUT_DIR', |
| 'touch $$OUTPUT_DIR/heronpy.whl', |
| 'rm -rf $$TMP_DIR', |
| ]), |
| ) |
| |
| ################################################################################ |
| # Heron helm chart packaging |
| ################################################################################ |
| genrule( |
| name = "generate-helm-charts", |
| srcs = [ |
| "//deploy/kubernetes/helm:chart" |
| ] + generated_release_files, |
| outs = ['index.yaml'], |
| tools = [ |
| "//third_party/helm:helm", |
| ], |
| stamp = 1, |
| cmd = "\n".join([ |
| 'export OUTPUT_DIR=$$(pwd)/$(@D)', |
| 'export RELEASE_FILE_DIR=$$(pwd)', |
| 'export TMP_DIR=$$(mktemp -d -t helm.XXXXX)', |
| 'export HELM_DIR=$$TMP_DIR/heron', |
| '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)', |
| 'mkdir -p $$TMP_DIR $$HELM_DIR heron-charts', |
| 'cp $(SRCS) $$HELM_DIR', |
| 'sed "s/VERSION/$$HERON_VERSION/" $$HELM_DIR/Chart.yaml.template > $$HELM_DIR/Chart.yaml', |
| 'sed "s/VERSION/$$HERON_VERSION/" $$HELM_DIR/values.yaml.template > $$HELM_DIR/values.yaml', |
| 'mkdir $$HELM_DIR/charts $$HELM_DIR/templates', |
| 'mv $$HELM_DIR/bookie.yaml $$HELM_DIR/tools.yaml $$HELM_DIR/templates', |
| 'mv $$HELM_DIR/zookeeper.yaml $$HELM_DIR/templates', |
| 'mv $$HELM_DIR/*.txt $$HELM_DIR/*.tpl $$HELM_DIR/templates', |
| 'rm $$HELM_DIR/Chart.yaml.template $$HELM_DIR/values.yaml.template $$HELM_DIR/release.yaml', |
| 'tree $$HELM_DIR', |
| '$(location //third_party/helm:helm) init --client-only', |
| '$(location //third_party/helm:helm) package $$HELM_DIR', |
| 'mv *.tgz heron-charts', |
| '$(location //third_party/helm:helm) repo index heron-charts --url https://storage.googleapis.com/heron-charts', |
| 'cp heron-charts/* $$OUTPUT_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-launcher", |
| srcs = ["template_bin.sh", "bin_common.sh"] + generated_release_files, |
| outs = ["launcher_bin.sh"], |
| cmd = """ |
| release_info="$$(cat $(location :release.yaml))" |
| bin_common="$$(cat $(location bin_common.sh))" |
| template="$$(cat $(location template_bin.sh))" |
| echo "$${bin_common}\n\n$${template//%release_info%/$${release_info}}" >$@ |
| """, |
| ) |
| |
| genrule( |
| name = "generate-tests-launcher", |
| srcs = ["tests_template_bin.sh", "bin_common.sh"] + generated_release_files, |
| outs = ["tests_launcher_bin.sh"], |
| cmd = """ |
| release_info="$$(cat $(location :release.yaml))" |
| bin_common="$$(cat $(location bin_common.sh))" |
| template="$$(cat $(location tests_template_bin.sh))" |
| echo "$${bin_common}\n\n$${template//%release_info%/$${release_info}}" >$@ |
| """, |
| ) |
| |
| load("//scripts/packages:self_extract_binary.bzl", "self_extract_binary") |
| |
| self_extract_binary( |
| name = "heron-install.sh", |
| flatten_resources = [ |
| ":heron", |
| ], |
| launcher = ":launcher_bin.sh", |
| ) |
| |
| self_extract_binary( |
| name = "heron-tests-install.sh", |
| flatten_resources = [ |
| ":heron-tests", |
| ], |
| launcher = ":tests_launcher_bin.sh", |
| ) |
| |
| filegroup( |
| name = "template-bin.sh", |
| srcs = ["template_bin.sh"], |
| ) |
| |
| filegroup( |
| name = "tests-template-bin.sh", |
| srcs = ["tests_template_bin.sh"], |
| ) |
| |
| filegroup( |
| name = "bin-common.sh", |
| srcs = ["bin_common.sh"], |
| ) |