Skip to content

Commit

Permalink
Merge pull request GoogleContainerTools#403 from evanj/base-alias
Browse files Browse the repository at this point in the history
debian10 support: Support Python2.7; Fix Python3; -debian9 suffix
  • Loading branch information
donmccasland authored Oct 2, 2019
2 parents 6dd426d + 1171f40 commit 94edf88
Show file tree
Hide file tree
Showing 13 changed files with 207 additions and 83 deletions.
21 changes: 10 additions & 11 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,10 @@ dpkg_list(
"libc-bin=2.24-11+deb9u4",

#python3
"libmpdec2",
"libpython3.5-minimal",
"python3.5-minimal",
"libpython3.5-stdlib",
"python3.5-minimal",

#dotnet
"libcurl3",
Expand Down Expand Up @@ -137,7 +138,6 @@ dpkg_list(
"libffi6",
"libtasn1-6",
"libsasl2-modules-db",
"libdb5.3",
"libgcrypt20",
"libgpg-error0",
"libacl1",
Expand Down Expand Up @@ -264,11 +264,9 @@ dpkg_list(
"libbz2-1.0",
"libdb5.3",
"libffi6",
"libncursesw5",
"liblzma5",
"libexpat1",
"libreadline7",
"libtinfo5",
"libsqlite3-0",
"mime-support",
"netbase",
Expand All @@ -293,18 +291,20 @@ dpkg_list(
# "openjdk-11-jre-headless",

#python
# "libpython2.7-minimal",
# "python2.7-minimal",
# "libpython2.7-stdlib",
"dash",
# Version required to skip a security fix to the pre-release library
# TODO: Remove when there is a security fix or dpkg_list finds the recent version
"libc-bin",
"libpython2.7-minimal",
"libpython2.7-stdlib",
"python2.7-minimal",

#python3
"libmpdec2",
"libpython3.7-minimal",
"python3.7-minimal",
"libpython3.7-stdlib",
"libtinfo6",
"libuuid1",
"libncursesw6",
"python3.7-minimal",

#dotnet
# "libcurl3",
Expand Down Expand Up @@ -339,7 +339,6 @@ dpkg_list(
# "libffi6",
# "libtasn1-6",
# "libsasl2-modules-db",
# "libdb5.3",
# "libgcrypt20",
# "libgpg-error0",
# "libacl1",
Expand Down
33 changes: 32 additions & 1 deletion base/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,41 @@ go_binary(
)

# Replicate the containers and tests for debian9 and debian10
distro_components("") # debian9
distro_components("-debian9")

distro_components("-debian10")

# alias debian9 as the default images
alias(
name = "static",
actual = ":static-debian9",
)

alias(
name = "static-nonroot",
actual = ":static-nonroot-debian9",
)

alias(
name = "base",
actual = ":base-debian9",
)

alias(
name = "base-nonroot",
actual = ":base-nonroot-debian9",
)

alias(
name = "debug",
actual = ":debug-debian9",
)

alias(
name = "debug-nonroot",
actual = ":debug-nonroot-debian9",
)

container_test(
name = "base_release_test-debian9",
configs = ["testdata/debian9.yaml"],
Expand Down
4 changes: 2 additions & 2 deletions base/base.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ load("//cacerts:cacerts.bzl", "cacerts")
NONROOT = 65532

DISTRO_PACKAGES = {
"": packages,
"-debian9": packages,
"-debian10": packages_debian10,
}

DISTRO_REPOSITORY = {
"": "@debian_stretch",
"-debian9": "@debian_stretch",
"-debian10": "@debian10",
}

Expand Down
15 changes: 13 additions & 2 deletions cc/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ load("@package_bundle//file:packages.bzl", "packages")
load("@package_bundle_debian10//file:packages.bzl", packages_debian10 = "packages")

DISTRO_PACKAGES = {
"": packages,
"-debian9": packages,
"-debian10": packages_debian10,
}

Expand All @@ -21,4 +21,15 @@ DISTRO_PACKAGES = {
) for mode in [
"",
":debug",
]] for distro_suffix in ("", "-debian10")]
]] for distro_suffix in ("-debian9", "-debian10")]

# Provide aliases so the default images use debian9
alias(
name = "cc",
actual = ":cc-debian9",
)

alias(
name = "debug",
actual = ":debug-debian9",
)
93 changes: 68 additions & 25 deletions experimental/python2.7/BUILD
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,46 @@ package(default_visibility = ["//visibility:public"])
load("@io_bazel_rules_docker//container:container.bzl", "container_image")
load("@io_bazel_rules_docker//contrib:test.bzl", "container_test")
load("@package_bundle//file:packages.bzl", "packages")
load("@package_bundle_debian10//file:packages.bzl", packages_debian10 = "packages")

DISTRO_PACKAGES = {
"-debian9": packages,
"-debian10": packages_debian10,
}

# distribution-specific deb dependencies
DISTRO_DEBS = {
"-debian9": [
"libncursesw5",
"libtinfo5",
],
"-debian10": [
"libncursesw6",
"libtinfo6",
],
}

[container_image(
name = "python27" if (not mode) else mode[1:],
name = ("python27" if (not mode) else mode[1:]) + distro_suffix,
# Based on //cc so that C extensions work properly.
base = "//cc" + mode,
base = "//cc" + (mode if mode else ":cc") + distro_suffix,
debs = [
packages["dash"],
packages["libbz2-1.0"],
packages["libc-bin"],
packages["libexpat1"],
packages["libdb5.3"],
packages["libffi6"],
packages["libncursesw5"],
packages["libreadline7"],
packages["libsqlite3-0"],
packages["libssl1.1"],
packages["libtinfo5"],
packages["mime-support"],
packages["readline-common"],
packages["zlib1g"],
packages["python2.7-minimal"],
packages["libpython2.7-minimal"],
packages["libpython2.7-stdlib"],
],
DISTRO_PACKAGES[distro_suffix]["dash"],
DISTRO_PACKAGES[distro_suffix]["libbz2-1.0"],
DISTRO_PACKAGES[distro_suffix]["libc-bin"],
DISTRO_PACKAGES[distro_suffix]["libexpat1"],
DISTRO_PACKAGES[distro_suffix]["libdb5.3"],
DISTRO_PACKAGES[distro_suffix]["libffi6"],
DISTRO_PACKAGES[distro_suffix]["libreadline7"],
DISTRO_PACKAGES[distro_suffix]["libsqlite3-0"],
DISTRO_PACKAGES[distro_suffix]["libssl1.1"],
DISTRO_PACKAGES[distro_suffix]["mime-support"],
DISTRO_PACKAGES[distro_suffix]["readline-common"],
DISTRO_PACKAGES[distro_suffix]["zlib1g"],
DISTRO_PACKAGES[distro_suffix]["python2.7-minimal"],
DISTRO_PACKAGES[distro_suffix]["libpython2.7-minimal"],
DISTRO_PACKAGES[distro_suffix]["libpython2.7-stdlib"],
] + [DISTRO_PACKAGES[distro_suffix][deb] for deb in DISTRO_DEBS[distro_suffix]],
entrypoint = [
"/usr/bin/python2.7",
],
Expand All @@ -39,12 +55,27 @@ load("@package_bundle//file:packages.bzl", "packages")
) for mode in [
"",
":debug",
]]
] for distro_suffix in ("-debian9", "-debian10")]

container_test(
name = "python27_test",
[container_test(
name = "python27" + distro_suffix + "_test",
configs = ["testdata/python27.yaml"],
image = ":python27",
image = ":python27" + distro_suffix,
) for distro_suffix in ("-debian9", "-debian10")]

# tests for version-specific things
container_test(
name = "debian9_test",
size = "medium",
configs = ["testdata/debian9.yaml"],
image = ":python27-debian9",
)

container_test(
name = "debian10_test",
size = "medium",
configs = ["testdata/debian10.yaml"],
image = ":python27-debian10",
)

genrule(
Expand All @@ -58,11 +89,12 @@ genrule(
sh_binary(
name = "generate_ldconfig_cache",
srcs = ["generate_ldconfig_cache.py"],
data = [":python27"],
data = [":python27-debian9"],
)

genrule(
name = "ld_so_cache_new",
srcs = [":python27-debian9"],
outs = ["ld.so.cache.new"],
cmd = "$(location :generate_ldconfig_cache) $(OUTS)",
tools = [":generate_ldconfig_cache"],
Expand All @@ -80,3 +112,14 @@ sh_test(
":ld.so.cache.new",
],
)

# Provide aliases so the default images use debian9
alias(
name = "python27",
actual = ":python27-debian9",
)

alias(
name = "debug",
actual = ":debug-debian9",
)
2 changes: 1 addition & 1 deletion experimental/python2.7/generate_ldconfig_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import tempfile


CONTAINER_IMAGE_PATH = 'experimental/python2.7/python27'
CONTAINER_IMAGE_PATH = 'experimental/python2.7/python27-debian9'


def main():
Expand Down
5 changes: 5 additions & 0 deletions experimental/python2.7/testdata/debian10.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
schemaVersion: "1.0.0"
commandTests:
- name: version
command: ["/usr/bin/python2.7", "--version"]
expectedError: ["Python 2.7.16"]
5 changes: 5 additions & 0 deletions experimental/python2.7/testdata/debian9.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
schemaVersion: "1.0.0"
commandTests:
- name: version
command: ["/usr/bin/python2.7", "--version"]
expectedError: ["Python 2.7.13"]
3 changes: 0 additions & 3 deletions experimental/python2.7/testdata/python27.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ commandTests:
- name: hello
command: ["/usr/bin/python2.7", "-c", "print 'Hello World'"]
expectedOutput: ['Hello World']
- name: version
command: ["/usr/bin/python2.7", "--version"]
expectedError: ["Python 2.7.13"]
# parts of the standard library assume /bin/sh exists via os.system and subprocess.Popen
- name: use_shell
command: ["/usr/bin/python2.7", "-c",
Expand Down
Loading

0 comments on commit 94edf88

Please sign in to comment.