8000 Use rules_pkg to create distributions (#234) · PoncinMatthieu/rules_python@e953b0a · GitHub
[go: up one dir, main page]

Skip to content
  • Commit e953b0a

    Browse files
    aiutobrandjon
    authored andcommitted
    Use rules_pkg to create distributions (bazel-contrib#234)
    This adds a packaging target to create a Bazel Federation-compliant distribution.
    1 parent 5a45316 commit e953b0a

    File tree

    9 files changed

    +103
    -6
    lines changed

    9 files changed

    +103
    -6
    lines changed

    BUILD

    Lines changed: 14 additions & 1 deletion
    Original file line numberDiff line numberDiff line change
    @@ -15,4 +15,17 @@ package(default_visibility = ["//visibility:public"])
    1515

    1616
    licenses(["notice"]) # Apache 2.0
    1717

    18-
    exports_files(["LICENSE"])
    18+
    exports_files(["LICENSE", "version.bzl"])
    19+
    20+
    filegroup(
    21+
    name = "distribution",
    22+
    srcs = [
    23+
    "BUILD",
    24+
    "LICENSE",
    25+
    "internal_deps.bzl",
    26+
    "internal_setup.bzl",
    27+
    "//python:distribution",
    28+
    "//tools:distribution",
    29+
    ],
    30+
    visibility = ["//distro:__pkg__"],
    31+
    )

    WORKSPACE

    Lines changed: 6 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -15,12 +15,11 @@
    1515
    workspace(name = "rules_python")
    1616

    1717
    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    18+
    1819
    http_archive(
    1920
    name = "bazel_federation",
    20-
    url = "https://github.com/bazelbuild/bazel-federation/archive/4da9b5f83ffae17613fa025a0701fa9db9350d41.zip",
    21-
    sha256 = "5b1cf980e327a8f30fc81c00c04007c543e17c09ed612fb645753936de790ed7",
    22-
    strip_prefix = "bazel-federation-4da9b5f83ffae17613fa025a0701fa9db9350d41",
    23-
    type = "zip",
    21+
    url = "https://github.com/bazelbuild/bazel-federation/releases/download/0.0.1/bazel_federation-0.0.1.tar.gz",
    22+
    sha256 = "506dfbfd74ade486ac077113f48d16835fdf6e343e1d4741552b450cfc2efb53",
    2423
    )
    2524

    2625
    load("@bazel_federation//:repositories.bzl", "rules_python_deps")
    @@ -29,6 +28,9 @@ rules_python_deps()
    2928
    load("@bazel_federation//setup:rules_python.bzl", "rules_python_setup")
    3029
    rules_python_setup(use_pip=True)
    3130

    31+
    # Everything below this line is used only for developing rules_python. Users
    32+
    # should not copy it to their WORKSPACE.
    33+
    3234
    load("//:internal_deps.bzl", "rules_python_internal_deps")
    3335
    rules_python_internal_deps()
    3436

    distro/BUILD

    Lines changed: 32 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -0,0 +1,32 @@
    1+
    package(
    2+
    default_visibility = ["//visibility:private"],
    3+
    )
    4+
    5+
    load("@rules_python//:version.bzl", "version")
    6+
    load("@rules_pkg//:pkg.bzl", "pkg_tar")
    7+
    load("@rules_pkg//releasing:defs.bzl", "print_rel_notes")
    8+
    9+
    # Build the artifact to put on the github release page.
    10+
    pkg_tar(
    11+
    name = "rules_python-%s" % version,
    12+
    srcs = [
    13+
    "//:distribution",
    14+
    ],
    15+
    extension = "tar.gz",
    16+
    # It is all source code, so make it read-only.
    17+
    mode = "0444",
    18+
    # Make it owned by root so it does not have the uid of the CI robot.
    19+
    owner = "0.0",
    20+
    package_dir = ".",
    21+
    strip_prefix = ".",
    22+
    )
    23+
    24+
    print_rel_notes(
    25+
    name = "relnotes",
    26+
    outs = ["relnotes.txt"],
    27+
    deps_method = "py_repositories",
    28+
    repo = "rules_python",
    29+
    setup_file = "python:repositories.bzl",
    30+
    toolchains_method = "rules_python_toolchains",
    31+
    version = version,
    32+
    )

    internal_deps.bzl

    Lines changed: 4 additions & 1 deletion
    Original file line numberDiff line numberDiff line change
    @@ -1,4 +1,4 @@
    1-
    load("@bazel_federation//:repositories.bzl", "bazel_stardoc")
    1+
    load("@bazel_federation//:repositories.bzl", "bazel_stardoc", "rules_pkg")
    22
    load("@bazel_federation//:third_party_repositories.bzl", "futures_2_whl", "futures_3_whl", "google_cloud_language_whl", "grpc_whl", "mock_whl", "subpar")
    33
    load("@rules_python//python:pip.bzl", "pip_import")
    44

    @@ -18,6 +18,9 @@ def rules_python_internal_deps():
    1818
    piptool()
    1919
    examples()
    2020

    21+
    # For packaging and distribution
    22+
    rules_pkg()
    23+
    2124

    2225
    def piptool():
    2326
    pip_import(

    python/BUILD

    Lines changed: 9 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -28,6 +28,15 @@ package(default_visibility = ["//visibility:public"])
    2828

    2929
    licenses(["notice"]) # Apache 2.0
    3030

    31+
    filegroup(
    32+
    name = "distribution",
    33+
    srcs = glob(["**"]) + [
    34+
    "//python/constraints:distribution",
    35+
    "//python/runfiles:distribution",
    36+
    ],
    37+
    visibility = ["//:__pkg__"],
    38+
    )
    39+
    3140
    # ========= Core rules =========
    3241

    3342
    exports_files([

    python/constraints/BUILD

    Lines changed: 6 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -16,6 +16,12 @@ package(default_visibility = ["//visibility:public"])
    1616

    1717
    licenses(["notice"])
    1818

    19+
    filegroup(
    20+
    name = "distribution",
    21+
    srcs = glob(["**"]),
    22+
    visibility = ["//python:__pkg__"],
    23+
    )
    24+
    1925
    # A constraint_setting to use for constraints related to the location of the
    2026
    # system Python 2 interpreter on a platform.
    2127
    alias(

    python/runfiles/BUILD

    Lines changed: 6 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -32,6 +32,12 @@
    3232

    3333
    load("//python:defs.bzl", "py_library")
    3434

    35+
    filegroup(
    36+
    name = "distribution",
    37+
    srcs = glob(["**"]),
    38+
    visibility = ["//python:__pkg__"],
    39+
    )
    40+
    3541
    py_library(
    3642
    name = "runfiles",
    3743
    srcs = ["runfiles.py"],

    tools/BUILD

    Lines changed: 10 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -17,3 +17,13 @@ licenses(["notice"]) # Apache 2.0
    1717

    1818
    # These files are generated and updated by ./update_tools.sh
    1919
    exports_files(["piptool.par", "whltool.par"])
    20+
    21+
    filegroup(
    22+
    name = "distribution",
    23+
    srcs = [
    24+
    "BUILD",
    25+
    ] + glob([
    26+
    "*.par",
    27+
    ]),
    28+
    visibility = ["//:__pkg__"],
    29+
    )

    version.bzl

    Lines changed: 16 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -0,0 +1,16 @@
    1+
    # Copyright 2019 The Bazel Authors. All rights reserved.
    2+
    #
    3+
    # Licensed under the Apache License, Version 2.0 (the "License");
    4+
    # you may not use this file except in compliance with the License.
    5+
    # You may obtain a copy of the License at
    6+
    #
    7+
    # http://www.apache.org/licenses/LICENSE-2.0
    8+
    #
    9+
    # Unless required by applicable law or agreed to in writing, software
    10+
    # distributed under the License is distributed on an "AS IS" BASIS,
    11+
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12+
    # See the License for the specific language governing permissions and
    13+
    # limitations under the License.
    14+
    """The version of rules_python."""
    15+
    16+
    version = "0.0.1"

    0 commit comments

    Comments
     (0)
    0