From 4229823937ad6c6395fefd51b5f617a40d4ce46b Mon Sep 17 00:00:00 2001 From: Yu Yi Date: Mon, 27 Feb 2017 15:34:05 +0000 Subject: Remove unnecessary python skylark rules and update example * We already have native python rules, so the skylark ones are no longer unnecessary now * Leaving `load skylark rules` statement in the example may be misleading for newcomers Testing done: * re-compile bazel * use it to build example folder and run py target ``` shell ./compile.sh compile /usr/bin/bazel /home/yiyu/opt/bazel/output/bazel build //examples:all /home/yiyu/opt/bazel/output/bazel run //examples/py:bin ``` -- Change-Id: Icd82afff2b74e77c0bcc80687b04225baf28f6ad Reviewed-on: https://cr.bazel.build/9070 PiperOrigin-RevId: 148646895 MOS_MIGRATED_REVID=148646895 --- examples/py/BUILD | 2 - tools/build_rules/py_rules.bzl | 121 ----------------------------------------- 2 files changed, 123 deletions(-) delete mode 100644 tools/build_rules/py_rules.bzl diff --git a/examples/py/BUILD b/examples/py/BUILD index 7570f578dd..39ef8c0452 100644 --- a/examples/py/BUILD +++ b/examples/py/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -load("//tools/build_rules:py_rules.bzl", "py_library", "py_binary") - py_library( name = "lib", srcs = ["lib.py"], diff --git a/tools/build_rules/py_rules.bzl b/tools/build_rules/py_rules.bzl deleted file mode 100644 index bd51780dff..0000000000 --- a/tools/build_rules/py_rules.bzl +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright 2014 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -ZIP_PATH = "/usr/bin/zip" - -py_file_types = FileType([".py"]) - - -def collect_transitive_sources(ctx): - source_files = set(order="compile") - for dep in ctx.attr.deps: - source_files += dep.transitive_py_files - - source_files += py_file_types.filter(ctx.files.srcs) - return source_files - - -def py_library_impl(ctx): - transitive_sources = collect_transitive_sources(ctx) - return struct( - files = set(), - transitive_py_files = transitive_sources) - - -def py_binary_impl(ctx): - main_file = py_file_types.filter(ctx.files.srcs)[0] - transitive_sources = collect_transitive_sources(ctx) - deploy_zip = ctx.outputs.deploy_zip - - deploy_zip_nomain = ctx.new_file(ctx.bin_dir, deploy_zip, ".nomain.zip") - - # This is not very scalable, because we just construct a huge string instead - # of using a nested set. We need to do it this way because Skylark currently - # does not support actions with non-artifact executables but with an - # argument list (instead of just a single command) - command = " ".join([ZIP_PATH, " -q ", deploy_zip_nomain.path, - " ".join([f.path for f in transitive_sources])]) - ctx.action( - inputs = list(transitive_sources), - outputs = [ deploy_zip_nomain ], - mnemonic = "PyZip", - command = command, - use_default_shell_env = False) - - dirs = [f.path[:f.path.rfind('/')] for f in transitive_sources] - outdir = deploy_zip.path + ".out" - - # Add __init__.py files and the __main__.py driver. - main_cmd = ("mkdir -p %s && " % outdir + - " cp %s %s/__main__.py && " % (main_file.path, outdir) + - " cp %s %s/main.zip && " % (deploy_zip_nomain.path, outdir) + - " (cd %s && " % outdir + - " mkdir -p %s && " % " ".join(dirs) + - " find . -type d -exec touch -t 198001010000 '{}'/__init__.py ';' && " + - " chmod +w main.zip && " + - " %s -quR main.zip $(find . -type f ) ) && " % (ZIP_PATH) + - " mv %s/main.zip %s " % (outdir, deploy_zip.path)) - - ctx.action( - inputs = [ deploy_zip_nomain, main_file ], - outputs = [ deploy_zip ], - mnemonic = "PyZipMain", - command = main_cmd) - - executable = ctx.outputs.executable - ctx.action( - inputs = [ deploy_zip, ], - outputs = [ executable, ], - command = "echo '#!/usr/bin/env python' | cat - %s > %s" % ( - deploy_zip.path, executable.path)) - - runfiles_files = transitive_sources + [executable] - - runfiles = ctx.runfiles(transitive_files = runfiles_files, - collect_default = True) - - files_to_build = set([executable]) - return struct(files = files_to_build, runfiles = runfiles) - - -py_srcs_attr = attr.label_list(allow_files = py_file_types) - -py_deps_attr = attr.label_list( - providers = ["transitive_py_files"], - allow_files = False) - -py_attrs = { - "srcs": py_srcs_attr, - "deps": py_deps_attr } - -py_library = rule( - py_library_impl, - attrs = py_attrs) - -py_binary_outputs = { - "deploy_zip": "%{name}.zip" - } - -py_binary = rule( - py_binary_impl, - executable = True, - attrs = py_attrs, - outputs = py_binary_outputs) - -py_test = rule( - py_binary_impl, - test = True, - executable = True, - attrs = py_attrs, - outputs = py_binary_outputs) -- cgit v1.2.3