mirror of
https://github.com/netdata/netdata.git
synced 2025-04-11 00:20:15 +00:00
1580 lines
40 KiB
Python
1580 lines
40 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
import dagger
|
|
|
|
|
|
_ALPINE_COMMON_PACKAGES = [
|
|
"alpine-sdk",
|
|
"autoconf",
|
|
"automake",
|
|
"bash",
|
|
"binutils",
|
|
"bison",
|
|
"cmake",
|
|
"curl",
|
|
"curl-static",
|
|
"elfutils-dev",
|
|
"flex",
|
|
"gcc",
|
|
"git",
|
|
"gnutls-dev",
|
|
"gzip",
|
|
"jq",
|
|
"libelf-static",
|
|
"libmnl-dev",
|
|
"libmnl-static",
|
|
"libtool",
|
|
"libuv-dev",
|
|
"libuv-static",
|
|
"lz4-dev",
|
|
"lz4-static",
|
|
"make",
|
|
"mongo-c-driver-dev",
|
|
"mongo-c-driver-static",
|
|
"musl-fts-dev",
|
|
"ncurses",
|
|
"ncurses-static",
|
|
"netcat-openbsd",
|
|
"ninja",
|
|
"openssh",
|
|
"pcre2-dev",
|
|
"pkgconfig",
|
|
"protobuf-dev",
|
|
"snappy-dev",
|
|
"snappy-static",
|
|
"util-linux-dev",
|
|
"wget",
|
|
"xz",
|
|
"yaml-dev",
|
|
"yaml-static",
|
|
"zlib-dev",
|
|
"zlib-static",
|
|
"zstd-dev",
|
|
"zstd-static",
|
|
]
|
|
|
|
|
|
def build_alpine_3_18(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("alpine:3.18")
|
|
|
|
pkgs = [pkg for pkg in _ALPINE_COMMON_PACKAGES]
|
|
|
|
ctr = ctr.with_exec(["apk", "add", "--no-cache"] + pkgs)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_alpine_3_19(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("alpine:3.19")
|
|
|
|
pkgs = [pkg for pkg in _ALPINE_COMMON_PACKAGES]
|
|
|
|
ctr = ctr.with_exec(["apk", "add", "--no-cache"] + pkgs)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build_openssl(
|
|
client: dagger.Client, ctr: dagger.Container
|
|
) -> dagger.Container:
|
|
tree = (
|
|
client.git(url="https://github.com/openssl/openssl", keep_git_dir=True)
|
|
.tag("openssl-3.1.4")
|
|
.tree()
|
|
)
|
|
|
|
#
|
|
# TODO: verify 32-bit builds
|
|
#
|
|
ctr = (
|
|
ctr.with_directory("/openssl", tree)
|
|
.with_workdir("/openssl")
|
|
.with_env_variable("CFLAGS", "-fno-lto -pipe")
|
|
.with_env_variable("LDFLAGS", "-static")
|
|
.with_env_variable("PKG_CONFIG", "pkg-config --static")
|
|
.with_exec(
|
|
[
|
|
"sed",
|
|
"-i",
|
|
"s/disable('static', 'pic', 'threads');/disable('static', 'pic');/",
|
|
"Configure",
|
|
]
|
|
)
|
|
.with_exec(
|
|
[
|
|
"./config",
|
|
"-static",
|
|
"threads",
|
|
"no-tests",
|
|
"--prefix=/openssl-static",
|
|
"--openssldir=/opt/netdata/etc/ssl",
|
|
]
|
|
)
|
|
.with_exec(["make", "V=1", "-j", str(os.cpu_count())])
|
|
.with_exec(["make", "V=1", "-j", str(os.cpu_count()), "install_sw"])
|
|
.with_exec(["ln", "-s", "/openssl-static/lib", "/openssl-static/lib64"])
|
|
.with_exec(["perl", "configdata.pm", "--dump"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build_bash(client: dagger.Client, ctr: dagger.Container) -> dagger.Container:
|
|
tree = (
|
|
client.git(url="https://git.savannah.gnu.org/git/bash.git", keep_git_dir=True)
|
|
.tag("bash-5.1")
|
|
.tree()
|
|
)
|
|
|
|
ctr = (
|
|
ctr.with_directory("/bash", tree)
|
|
.with_workdir("/bash")
|
|
.with_env_variable("CFLAGS", "-pipe")
|
|
.with_env_variable("LDFLAGS", "")
|
|
.with_env_variable("PKG_CONFIG", "pkg-config --static")
|
|
.with_env_variable("PKG_CONFIG_PATH", "/openssl-static/lib64/pkgconfig")
|
|
.with_exec(
|
|
[
|
|
"./configure",
|
|
"--prefix",
|
|
"/opt/netdata",
|
|
"--without-bash-malloc",
|
|
"--enable-static-link",
|
|
"--enable-net-redirections",
|
|
"--enable-array-variables",
|
|
"--disable-progcomp",
|
|
"--disable-profiling",
|
|
"--disable-nls",
|
|
"--disable-dependency-tracking",
|
|
]
|
|
)
|
|
.with_exec(
|
|
[
|
|
"echo",
|
|
"-e",
|
|
"all:\nclean:\ninstall:\n",
|
|
">",
|
|
"examples/loadables/Makefile",
|
|
]
|
|
)
|
|
.with_exec(["make", "clean"])
|
|
# see: https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash/files/bash-5.1-parallel_make.patch?id=4c2ebbf4b8bc660beb98cc2d845c73375d6e4f50
|
|
.with_exec(["make", "V=1", "-j", "2", "install"])
|
|
.with_exec(["strip", "/opt/netdata/bin/bash"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build_curl(client: dagger.Client, ctr: dagger.Container) -> dagger.Container:
|
|
tree = (
|
|
client.git(url="https://github.com/curl/curl", keep_git_dir=True)
|
|
.tag("curl-8_4_0")
|
|
.tree()
|
|
)
|
|
|
|
ctr = (
|
|
ctr.with_directory("/curl", tree)
|
|
.with_workdir("/curl")
|
|
.with_env_variable("CFLAGS", "-I/openssl-static/include -pipe")
|
|
.with_env_variable("LDFLAGS", "-static -L/openssl-static/lib64")
|
|
.with_env_variable("PKG_CONFIG", "pkg-config --static")
|
|
.with_env_variable("PKG_CONFIG_PATH", "/openssl-static/lib64/pkgconfig")
|
|
.with_exec(["autoreconf", "-ifv"])
|
|
.with_exec(
|
|
[
|
|
"./configure",
|
|
"--prefix=/curl-static",
|
|
"--enable-optimize",
|
|
"--disable-shared",
|
|
"--enable-static",
|
|
"--enable-http",
|
|
"--disable-ldap",
|
|
"--disable-ldaps",
|
|
"--enable-proxy",
|
|
"--disable-dict",
|
|
"--disable-telnet",
|
|
"--disable-tftp",
|
|
"--disable-pop3",
|
|
"--disable-imap",
|
|
"--disable-smb",
|
|
"--disable-smtp",
|
|
"--disable-gopher",
|
|
"--enable-ipv6",
|
|
"--enable-cookies",
|
|
"--with-ca-fallback",
|
|
"--with-openssl",
|
|
"--disable-dependency-tracking",
|
|
]
|
|
)
|
|
.with_exec(
|
|
["sed", "-i", "-e", "s/LDFLAGS =/LDFLAGS = -all-static/", "src/Makefile"]
|
|
)
|
|
.with_exec(["make", "clean"])
|
|
.with_exec(["make", "V=1", "-j", str(os.cpu_count()), "install"])
|
|
.with_exec(["cp", "/curl-static/bin/curl", "/opt/netdata/bin/curl"])
|
|
.with_exec(["strip", "/opt/netdata/bin/curl"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build_ioping(
|
|
client: dagger.Client, ctr: dagger.Container
|
|
) -> dagger.Container:
|
|
tree = (
|
|
client.git(url="https://github.com/koct9i/ioping", keep_git_dir=True)
|
|
.tag("v1.3")
|
|
.tree()
|
|
)
|
|
|
|
ctr = (
|
|
ctr.with_directory("/ioping", tree)
|
|
.with_workdir("/ioping")
|
|
.with_env_variable("CFLAGS", "-static -pipe")
|
|
.with_exec(["mkdir", "-p", "/opt/netdata/usr/libexec/netdata/plugins.d"])
|
|
.with_exec(["make", "V=1"])
|
|
.with_exec(
|
|
[
|
|
"install",
|
|
"-o",
|
|
"root",
|
|
"-g",
|
|
"root",
|
|
"-m",
|
|
"4750",
|
|
"ioping",
|
|
"/opt/netdata/usr/libexec/netdata/plugins.d",
|
|
]
|
|
)
|
|
.with_exec(["strip", "/opt/netdata/usr/libexec/netdata/plugins.d/ioping"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build_libnetfilter_acct(
|
|
client: dagger.Client, ctr: dagger.Container
|
|
) -> dagger.Container:
|
|
tree = (
|
|
client.git(url="git://git.netfilter.org/libnetfilter_acct", keep_git_dir=True)
|
|
.tag("libnetfilter_acct-1.0.3")
|
|
.tree()
|
|
)
|
|
|
|
ctr = (
|
|
ctr.with_directory("/libnetfilter_acct", tree)
|
|
.with_workdir("/libnetfilter_acct")
|
|
.with_env_variable("CFLAGS", "-static -I/usr/include/libmnl -pipe")
|
|
.with_env_variable("LDFLAGS", "-static -L/usr/lib -lmnl")
|
|
.with_env_variable("PKG_CONFIG", "pkg-config --static")
|
|
.with_env_variable("PKG_CONFIG_PATH", "/usr/lib/pkgconfig")
|
|
.with_exec(["autoreconf", "-ifv"])
|
|
.with_exec(
|
|
[
|
|
"./configure",
|
|
"--prefix=/libnetfilter_acct-static",
|
|
"--exec-prefix=/libnetfilter_acct-static",
|
|
]
|
|
)
|
|
.with_exec(["make", "clean"])
|
|
.with_exec(["make", "V=1", "-j", str(os.cpu_count()), "install"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build_netdata(
|
|
client: dagger.Client, ctr: dagger.Container
|
|
) -> dagger.Container:
|
|
CFLAGS = [
|
|
"-ffunction-sections",
|
|
"-fdata-sections",
|
|
"-static",
|
|
"-O2",
|
|
"-funroll-loops",
|
|
"-I/openssl-static/include",
|
|
"-I/libnetfilter_acct-static/include/libnetfilter_acct",
|
|
"-I/curl-local/include/curl",
|
|
"-I/usr/include/libmnl",
|
|
"-pipe",
|
|
]
|
|
|
|
LDFLAGS = [
|
|
"-Wl,--gc-sections",
|
|
"-static",
|
|
"-L/openssl-static/lib64",
|
|
"-L/libnetfilter_acct-static/lib",
|
|
"-lnetfilter_acct",
|
|
"-L/usr/lib",
|
|
"-lmnl",
|
|
"-L/usr/lib",
|
|
"-lzstd",
|
|
"-L/curl-local/lib",
|
|
]
|
|
|
|
PKG_CONFIG = [
|
|
"pkg-config",
|
|
"--static",
|
|
]
|
|
|
|
PKG_CONFIG_PATH = [
|
|
"/openssl-static/lib64/pkgconfig",
|
|
"/libnetfilter_acct-static/lib/pkgconfig",
|
|
"/usr/lib/pkgconfig",
|
|
"/curl-local/lib/pkgconfig",
|
|
]
|
|
|
|
CMAKE_FLAGS = [
|
|
"-DOPENSSL_ROOT_DIR=/openssl-static",
|
|
"-DOPENSSL_LIBRARIES=/openssl-static/lib64",
|
|
"-DCMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE=/openssl-static",
|
|
"-DLWS_OPENSSL_INCLUDE_DIRS=/openssl-static/include",
|
|
"-DLWS_OPENSSL_LIBRARIES=/openssl-static/lib64/libssl.a;/openssl-static/lib64/libcrypto.a",
|
|
]
|
|
|
|
NETDATA_INSTALLER_CMD = [
|
|
"./netdata-installer.sh",
|
|
"--install-prefix",
|
|
"/opt",
|
|
"--dont-wait",
|
|
"--dont-start-it",
|
|
"--disable-exporting-mongodb",
|
|
"--require-cloud",
|
|
"--use-system-protobuf",
|
|
"--dont-scrub-cflags-even-though-it-may-break-things",
|
|
"--one-time-build",
|
|
"--enable-lto",
|
|
]
|
|
|
|
ctr = (
|
|
ctr.with_workdir("/netdata")
|
|
.with_env_variable("NETDATA_CMAKE_OPTIONS", "-DCMAKE_BUILD_TYPE=Debug")
|
|
.with_env_variable("CFLAGS", " ".join(CFLAGS))
|
|
.with_env_variable("LDFLAGS", " ".join(LDFLAGS))
|
|
.with_env_variable("PKG_CONFIG", " ".join(PKG_CONFIG))
|
|
.with_env_variable("PKG_CONFIG_PATH", ":".join(PKG_CONFIG_PATH))
|
|
.with_env_variable("CMAKE_FLAGS", " ".join(CMAKE_FLAGS))
|
|
.with_env_variable("EBPF_LIBC", "static")
|
|
.with_env_variable("IS_NETDATA_STATIC_BINARY", "yes")
|
|
.with_exec(NETDATA_INSTALLER_CMD)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def static_build(client, repo_path):
|
|
cmake_build_release_path = os.path.join(repo_path, "cmake-build-release")
|
|
|
|
ctr = build_alpine_3_18(client, dagger.Platform("linux/x86_64"))
|
|
ctr = static_build_openssl(client, ctr)
|
|
ctr = static_build_bash(client, ctr)
|
|
ctr = static_build_curl(client, ctr)
|
|
ctr = static_build_ioping(client, ctr)
|
|
ctr = static_build_libnetfilter_acct(client, ctr)
|
|
|
|
ctr = ctr.with_directory(
|
|
"/netdata",
|
|
client.host().directory(repo_path),
|
|
exclude=[
|
|
f"{cmake_build_release_path}/*",
|
|
"fluent-bit/build",
|
|
],
|
|
)
|
|
|
|
# TODO: link bin/sbin
|
|
|
|
ctr = static_build_netdata(client, ctr)
|
|
|
|
build_dir = ctr.directory("/opt/netdata")
|
|
artifact_dir = os.path.join(Path.home(), "ci/netdata-static")
|
|
output_task = build_dir.export(artifact_dir)
|
|
return output_task
|
|
|
|
|
|
_CENTOS_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"autogen",
|
|
"automake",
|
|
"bison",
|
|
"bison-devel",
|
|
"cmake",
|
|
"cups-devel",
|
|
"curl",
|
|
"diffutils",
|
|
"elfutils-libelf-devel",
|
|
"findutils",
|
|
"flex",
|
|
"flex-devel",
|
|
"freeipmi-devel",
|
|
"gcc",
|
|
"gcc-c++",
|
|
"git-core",
|
|
"golang",
|
|
"json-c-devel",
|
|
"libyaml-devel",
|
|
"libatomic",
|
|
"libcurl-devel",
|
|
"libmnl-devel",
|
|
"libnetfilter_acct-devel",
|
|
"libtool",
|
|
"libuuid-devel",
|
|
"libuv-devel",
|
|
"libzstd-devel",
|
|
"lm_sensors",
|
|
"lz4-devel",
|
|
"make",
|
|
"ninja-build",
|
|
"openssl-devel",
|
|
"openssl-perl",
|
|
"patch",
|
|
"pcre2-devel",
|
|
"pkgconfig",
|
|
"pkgconfig(libmongoc-1.0)",
|
|
"procps",
|
|
"protobuf-c-devel",
|
|
"protobuf-compiler",
|
|
"protobuf-devel",
|
|
"rpm-build",
|
|
"rpm-devel",
|
|
"rpmdevtools",
|
|
"snappy-devel",
|
|
"systemd-devel",
|
|
"wget",
|
|
"zlib-devel",
|
|
]
|
|
|
|
|
|
def build_amazon_linux_2(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("amazonlinux:2")
|
|
|
|
pkgs = [pkg for pkg in _CENTOS_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["yum", "update", "-y"])
|
|
.with_exec(["yum", "install", "-y"] + pkgs)
|
|
.with_exec(["yum", "clean", "all"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
if platform == "linux/x86_64":
|
|
machine = "x86_64"
|
|
elif platform == "linux/arm64":
|
|
machine = "aarch64"
|
|
else:
|
|
raise Exception(
|
|
"Amaxon Linux 2 supports only linux/amd64 and linux/arm64 platforms."
|
|
)
|
|
|
|
|
|
checksum_path = Path(__file__).parent / f"files/cmake-{machine}.sha256"
|
|
|
|
ctr = (
|
|
ctr.with_file(
|
|
f"cmake-{machine}.sha256",
|
|
client.host().file(checksum_path.as_posix()),
|
|
)
|
|
.with_exec(
|
|
[
|
|
"curl",
|
|
"--fail",
|
|
"-sSL",
|
|
"--connect-timeout",
|
|
"20",
|
|
"--retry",
|
|
"3",
|
|
"--output",
|
|
f"cmake-{machine}.sh",
|
|
f"https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-{machine}.sh",
|
|
]
|
|
)
|
|
.with_exec(["sha256sum", "-c", f"cmake-{machine}.sha256"])
|
|
.with_exec(["chmod", "u+x", f"./cmake-{machine}.sh"])
|
|
.with_exec([f"./cmake-{machine}.sh", "--skip-license", "--prefix=/usr/local"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_centos_7(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("centos:7")
|
|
|
|
pkgs = [pkg for pkg in _CENTOS_COMMON_PACKAGES] + ["bash"]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["yum", "install", "-y", "epel-release"])
|
|
.with_exec(["yum", "update", "-y"])
|
|
.with_exec(["yum", "install", "-y"] + pkgs)
|
|
.with_exec(["yum", "clean", "all"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
if platform == "linux/x86_64":
|
|
machine = "x86_64"
|
|
elif platform == "linux/arm64":
|
|
machine = "aarch64"
|
|
else:
|
|
raise Exception("CentOS 7 supports only linux/amd64 and linux/arm64 platforms.")
|
|
|
|
checksum_path = Path(__file__).parent / f"files/cmake-{machine}.sha256"
|
|
|
|
ctr = (
|
|
ctr.with_file(
|
|
f"cmake-{machine}.sha256",
|
|
client.host().file(checksum_path.as_posix()),
|
|
)
|
|
.with_exec(
|
|
[
|
|
"curl",
|
|
"--fail",
|
|
"-sSL",
|
|
"--connect-timeout",
|
|
"20",
|
|
"--retry",
|
|
"3",
|
|
"--output",
|
|
f"cmake-{machine}.sh",
|
|
f"https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-{machine}.sh",
|
|
]
|
|
)
|
|
.with_exec(["sha256sum", "-c", f"cmake-{machine}.sha256"])
|
|
.with_exec(["chmod", "u+x", f"./cmake-{machine}.sh"])
|
|
.with_exec([f"./cmake-{machine}.sh", "--skip-license", "--prefix=/usr/local"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
_ROCKY_LINUX_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"automake",
|
|
"bash",
|
|
"bison",
|
|
"cmake",
|
|
"cups-devel",
|
|
"curl",
|
|
"libcurl-devel",
|
|
"diffutils",
|
|
"elfutils-libelf-devel",
|
|
"findutils",
|
|
"flex",
|
|
"freeipmi-devel",
|
|
"gcc",
|
|
"gcc-c++",
|
|
"git",
|
|
"golang",
|
|
"json-c-devel",
|
|
"libatomic",
|
|
"libmnl-devel",
|
|
"libtool",
|
|
"libuuid-devel",
|
|
"libuv-devel",
|
|
"libyaml-devel",
|
|
"libzstd-devel",
|
|
"lm_sensors",
|
|
"lz4-devel",
|
|
"make",
|
|
"ninja-build",
|
|
"nc",
|
|
"openssl-devel",
|
|
"openssl-perl",
|
|
"patch",
|
|
"pcre2-devel",
|
|
"pkgconfig",
|
|
"pkgconfig(libmongoc-1.0)",
|
|
"procps",
|
|
"protobuf-c-devel",
|
|
"protobuf-compiler",
|
|
"protobuf-devel",
|
|
"python3",
|
|
"python3-pyyaml",
|
|
"rpm-build",
|
|
"rpm-devel",
|
|
"rpmdevtools",
|
|
"snappy-devel",
|
|
"systemd-devel",
|
|
"wget",
|
|
"zlib-devel",
|
|
]
|
|
|
|
|
|
def build_rocky_linux_8(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("rockylinux:8")
|
|
|
|
pkgs = [pkg for pkg in _ROCKY_LINUX_COMMON_PACKAGES] + ["autogen"]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"dnf-command(config-manager)",
|
|
"epel-release",
|
|
]
|
|
)
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "powertools"])
|
|
.with_exec(["dnf", "clean", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_rocky_linux_9(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("rockylinux:9")
|
|
|
|
pkgs = [pkg for pkg in _ROCKY_LINUX_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"dnf-command(config-manager)",
|
|
"epel-release",
|
|
]
|
|
)
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "crb"])
|
|
.with_exec(["dnf", "clean", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--allowerasing",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
_CENTOS_STREAM_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"automake",
|
|
"bash",
|
|
"bison",
|
|
"cmake",
|
|
"cups-devel",
|
|
"curl",
|
|
"libcurl-devel",
|
|
"libyaml-devel",
|
|
"diffutils",
|
|
"elfutils-libelf-devel",
|
|
"findutils",
|
|
"flex",
|
|
"freeipmi-devel",
|
|
"gcc",
|
|
"gcc-c++",
|
|
"git",
|
|
"golang",
|
|
"json-c-devel",
|
|
"libatomic",
|
|
"libmnl-devel",
|
|
"libtool",
|
|
"libuuid-devel",
|
|
"libuv-devel",
|
|
# "libzstd-devel",
|
|
"lm_sensors",
|
|
"lz4-devel",
|
|
"make",
|
|
"ninja-build",
|
|
"nc",
|
|
"openssl-devel",
|
|
"openssl-perl",
|
|
"patch",
|
|
"pcre2-devel",
|
|
"pkgconfig",
|
|
"pkgconfig(libmongoc-1.0)",
|
|
"procps",
|
|
"protobuf-c-devel",
|
|
"protobuf-compiler",
|
|
"protobuf-devel",
|
|
"python3",
|
|
"python3-pyyaml",
|
|
"rpm-build",
|
|
"rpm-devel",
|
|
"rpmdevtools",
|
|
"snappy-devel",
|
|
"systemd-devel",
|
|
"wget",
|
|
"zlib-devel",
|
|
]
|
|
|
|
|
|
def build_centos_stream_8(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("quay.io/centos/centos:stream8")
|
|
|
|
pkgs = [pkg for pkg in _CENTOS_STREAM_COMMON_PACKAGES] + ["autogen"]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"dnf-command(config-manager)",
|
|
"epel-release",
|
|
]
|
|
)
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "powertools"])
|
|
.with_exec(["dnf", "clean", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_centos_stream_9(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("quay.io/centos/centos:stream9")
|
|
|
|
pkgs = [pkg for pkg in _CENTOS_STREAM_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"dnf-command(config-manager)",
|
|
"epel-release",
|
|
]
|
|
)
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "crb"])
|
|
.with_exec(["dnf", "clean", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--allowerasing",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
_ORACLE_LINUX_COMMON_PACKAGES = list(_ROCKY_LINUX_COMMON_PACKAGES)
|
|
|
|
|
|
def build_oracle_linux_9(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("oraclelinux:9")
|
|
|
|
pkgs = [pkg for pkg in _ORACLE_LINUX_COMMON_PACKAGES]
|
|
|
|
repo_path = str(Path(__file__).parent.parent.parent)
|
|
this_path = os.path.join(repo_path, "packaging/dag")
|
|
|
|
ctr = (
|
|
ctr.with_file(
|
|
"/etc/yum.repos.d/ol9-epel.repo",
|
|
client.host().file(f"{this_path}/ol9-epel.repo"),
|
|
)
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "ol9_codeready_builder"])
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "ol9_developer_EPEL"])
|
|
.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(["dnf", "clean", "-y", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_oracle_linux_8(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("oraclelinux:8")
|
|
|
|
pkgs = [pkg for pkg in _ORACLE_LINUX_COMMON_PACKAGES] + ["autogen"]
|
|
|
|
repo_path = str(Path(__file__).parent.parent.parent)
|
|
this_path = os.path.join(repo_path, "packaging/dag")
|
|
|
|
ctr = (
|
|
ctr.with_file(
|
|
"/etc/yum.repos.d/ol8-epel.repo",
|
|
client.host().file(f"{this_path}/ol8-epel.repo"),
|
|
)
|
|
.with_exec(["dnf", "config-manager", "--set-enabled", "ol8_codeready_builder"])
|
|
.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(["dnf", "clean", "-y", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
_OPENSUSE_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"autogen",
|
|
"automake",
|
|
"bison",
|
|
"cmake",
|
|
"cups",
|
|
"cups-devel",
|
|
"curl",
|
|
"diffutils",
|
|
"flex",
|
|
"freeipmi-devel",
|
|
"gcc",
|
|
"gcc-c++",
|
|
"git-core",
|
|
"go",
|
|
"json-glib-devel",
|
|
"judy-devel",
|
|
"libatomic1",
|
|
"libcurl-devel",
|
|
"libelf-devel",
|
|
"liblz4-devel",
|
|
"libjson-c-devel",
|
|
"libyaml-devel",
|
|
"libmnl0",
|
|
"libmnl-devel",
|
|
"libnetfilter_acct1",
|
|
"libnetfilter_acct-devel",
|
|
"libpcre2-8-0",
|
|
"libopenssl-devel",
|
|
"libtool",
|
|
"libuv-devel",
|
|
"libuuid-devel",
|
|
"libzstd-devel",
|
|
"make",
|
|
"ninja",
|
|
"patch",
|
|
"pkg-config",
|
|
"protobuf-devel",
|
|
"rpm-build",
|
|
"rpm-devel",
|
|
"rpmdevtools",
|
|
"snappy-devel",
|
|
"systemd-devel",
|
|
"tar",
|
|
"wget",
|
|
"xen-devel",
|
|
]
|
|
|
|
|
|
def build_opensuse_tumbleweed(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("opensuse/tumbleweed:latest")
|
|
|
|
pkgs = [pkg for pkg in _OPENSUSE_COMMON_PACKAGES] + ["protobuf-c"]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["zypper", "update", "-y"])
|
|
.with_exec(
|
|
[
|
|
"zypper",
|
|
"install",
|
|
"-y",
|
|
"--allow-downgrade",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["zypper", "clean"])
|
|
.with_exec(["rm", "-rf", "/var/cache/zypp/*/*"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/usr/src/packages/BUILD",
|
|
"/usr/src/packages/RPMS",
|
|
"/usr/src/packages/SOURCES",
|
|
"/usr/src/packages/SPECS",
|
|
"/usr/src/packages/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_opensuse_15_5(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("opensuse/leap:15.5")
|
|
|
|
pkgs = [pkg for pkg in _OPENSUSE_COMMON_PACKAGES] + ["libprotobuf-c-devel"]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["zypper", "update", "-y"])
|
|
.with_exec(
|
|
[
|
|
"zypper",
|
|
"install",
|
|
"-y",
|
|
"--allow-downgrade",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["zypper", "clean"])
|
|
.with_exec(["rm", "-rf", "/var/cache/zypp/*/*"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/usr/src/packages/BUILD",
|
|
"/usr/src/packages/RPMS",
|
|
"/usr/src/packages/SOURCES",
|
|
"/usr/src/packages/SPECS",
|
|
"/usr/src/packages/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_opensuse_15_4(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
crt = client.container(platform=platform).from_("opensuse/leap:15.4")
|
|
|
|
pkgs = [pkg for pkg in _OPENSUSE_COMMON_PACKAGES] + ["libprotobuf-c-devel"]
|
|
|
|
crt = (
|
|
crt.with_exec(["zypper", "update", "-y"])
|
|
.with_exec(
|
|
[
|
|
"zypper",
|
|
"install",
|
|
"-y",
|
|
"--allow-downgrade",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["zypper", "clean"])
|
|
.with_exec(["rm", "-rf", "/var/cache/zypp/*/*"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/usr/src/packages/BUILD",
|
|
"/usr/src/packages/RPMS",
|
|
"/usr/src/packages/SOURCES",
|
|
"/usr/src/packages/SPECS",
|
|
"/usr/src/packages/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return crt
|
|
|
|
|
|
_FEDORA_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"autogen",
|
|
"automake",
|
|
"bash",
|
|
"bison",
|
|
"cmake",
|
|
"cups-devel",
|
|
"curl",
|
|
"diffutils",
|
|
"elfutils-libelf-devel",
|
|
"findutils",
|
|
"flex",
|
|
"freeipmi-devel",
|
|
"gcc",
|
|
"gcc-c++",
|
|
"git-core",
|
|
"golang",
|
|
"json-c-devel",
|
|
"libcurl-devel",
|
|
"libyaml-devel",
|
|
"Judy-devel",
|
|
"libatomic",
|
|
"libmnl-devel",
|
|
"libnetfilter_acct-devel",
|
|
"libtool",
|
|
"libuuid-devel",
|
|
"libuv-devel",
|
|
"libzstd-devel",
|
|
"lz4-devel",
|
|
"make",
|
|
"ninja-build",
|
|
"openssl-devel",
|
|
"openssl-perl",
|
|
"patch",
|
|
"pcre2-devel",
|
|
"pkgconfig",
|
|
]
|
|
|
|
|
|
def build_fedora_37(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("fedora:37")
|
|
|
|
pkgs = [pkg for pkg in _FEDORA_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(["dnf", "clean", "-y", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_fedora_38(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("fedora:38")
|
|
|
|
pkgs = [pkg for pkg in _FEDORA_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(["dnf", "clean", "-y", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_fedora_39(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("fedora:39")
|
|
|
|
pkgs = [pkg for pkg in _FEDORA_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_exec(["dnf", "distro-sync", "-y", "--nodocs"])
|
|
.with_exec(["dnf", "clean", "-y", "packages"])
|
|
.with_exec(
|
|
[
|
|
"dnf",
|
|
"install",
|
|
"-y",
|
|
"--nodocs",
|
|
"--setopt=install_weak_deps=False",
|
|
"--setopt=diskspacecheck=False",
|
|
]
|
|
+ pkgs
|
|
)
|
|
.with_exec(["rm", "-rf", "/var/cache/dnf"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(
|
|
[
|
|
"mkdir",
|
|
"-p",
|
|
"/root/rpmbuild/BUILD",
|
|
"/root/rpmbuild/RPMS",
|
|
"/root/rpmbuild/SOURCES",
|
|
"/root/rpmbuild/SPECS",
|
|
"/root/rpmbuild/SRPMS",
|
|
]
|
|
)
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
_DEBIAN_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"autogen",
|
|
"automake",
|
|
"bison",
|
|
"build-essential",
|
|
"ca-certificates",
|
|
"cmake",
|
|
"curl",
|
|
"dh-autoreconf",
|
|
"dh-make",
|
|
"dpkg-dev",
|
|
"flex",
|
|
"g++",
|
|
"gcc",
|
|
"git-buildpackage",
|
|
"git-core",
|
|
"golang",
|
|
"libatomic1",
|
|
"libcurl4-openssl-dev",
|
|
"libcups2-dev",
|
|
"libdistro-info-perl",
|
|
"libelf-dev",
|
|
"libipmimonitoring-dev",
|
|
"libjson-c-dev",
|
|
"libyaml-dev",
|
|
"libjudy-dev",
|
|
"liblz4-dev",
|
|
"libmnl-dev",
|
|
"libmongoc-dev",
|
|
"libnetfilter-acct-dev",
|
|
"libpcre2-dev",
|
|
"libprotobuf-dev",
|
|
"libprotoc-dev",
|
|
"libsnappy-dev",
|
|
"libsystemd-dev",
|
|
"libssl-dev",
|
|
"libtool",
|
|
"libuv1-dev",
|
|
"libzstd-dev",
|
|
"make",
|
|
"ninja-build",
|
|
"pkg-config",
|
|
"protobuf-compiler",
|
|
"systemd",
|
|
"uuid-dev",
|
|
"wget",
|
|
"zlib1g-dev",
|
|
]
|
|
|
|
|
|
def build_debian_10(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("debian:buster")
|
|
|
|
pkgs = [pkg for pkg in _DEBIAN_COMMON_PACKAGES] + ["dh-systemd", "libxen-dev"]
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_debian_11(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("debian:bullseye")
|
|
|
|
pkgs = [pkg for pkg in _DEBIAN_COMMON_PACKAGES] + ["libxen-dev"]
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_debian_12(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("debian:bookworm")
|
|
|
|
pkgs = [pkg for pkg in _DEBIAN_COMMON_PACKAGES]
|
|
|
|
if platform != dagger.Platform("linux/i386"):
|
|
pkgs.append("libxen-dev")
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
_UBUNTU_COMMON_PACKAGES = [
|
|
"autoconf",
|
|
"autoconf-archive",
|
|
"autogen",
|
|
"automake",
|
|
"bison",
|
|
"build-essential",
|
|
"ca-certificates",
|
|
"cmake",
|
|
"curl",
|
|
"dh-autoreconf",
|
|
"dh-make",
|
|
"dpkg-dev",
|
|
"flex",
|
|
"g++",
|
|
"gcc",
|
|
"git-buildpackage",
|
|
"git-core",
|
|
"golang",
|
|
"libatomic1",
|
|
"libcurl4-openssl-dev",
|
|
"libcups2-dev",
|
|
"libdistro-info-perl",
|
|
"libelf-dev",
|
|
"libipmimonitoring-dev",
|
|
"libjson-c-dev",
|
|
"libyaml-dev",
|
|
"libjudy-dev",
|
|
"liblz4-dev",
|
|
"libmnl-dev",
|
|
"libmongoc-dev",
|
|
"libnetfilter-acct-dev",
|
|
"libpcre2-dev",
|
|
"libprotobuf-dev",
|
|
"libprotoc-dev",
|
|
"libsnappy-dev",
|
|
"libsystemd-dev",
|
|
"libssl-dev",
|
|
"libtool",
|
|
"libuv1-dev",
|
|
"libxen-dev",
|
|
"libzstd-dev",
|
|
"make",
|
|
"ninja-build",
|
|
"pkg-config",
|
|
"protobuf-compiler",
|
|
"systemd",
|
|
"uuid-dev",
|
|
"wget",
|
|
"zlib1g-dev",
|
|
]
|
|
|
|
|
|
def build_ubuntu_20_04(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("ubuntu:20.04")
|
|
|
|
pkgs = [pkg for pkg in _UBUNTU_COMMON_PACKAGES] + ["dh-systemd"]
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
#
|
|
# FIXME: add kitware for cmake on arm-hf
|
|
#
|
|
|
|
return ctr
|
|
|
|
|
|
def build_ubuntu_22_04(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("ubuntu:22.04")
|
|
|
|
pkgs = [pkg for pkg in _UBUNTU_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_ubuntu_23_04(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("ubuntu:23.04")
|
|
|
|
pkgs = [pkg for pkg in _UBUNTU_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def build_ubuntu_23_10(
|
|
client: dagger.Client, platform: dagger.Platform
|
|
) -> dagger.Container:
|
|
ctr = client.container(platform=platform).from_("ubuntu:23.10")
|
|
|
|
pkgs = [pkg for pkg in _UBUNTU_COMMON_PACKAGES]
|
|
|
|
ctr = (
|
|
ctr.with_env_variable("DEBIAN_FRONTEND", "noninteractive")
|
|
.with_exec(["apt-get", "update"])
|
|
.with_exec(["apt-get", "upgrade", "-y"])
|
|
.with_exec(["apt-get", "install", "-y", "--no-install-recommends"] + pkgs)
|
|
.with_exec(["apt-get", "clean"])
|
|
.with_exec(["c_rehash"])
|
|
.with_exec(["rm", "-rf", "/var/lib/apt/lists/*"])
|
|
)
|
|
|
|
return ctr
|
|
|
|
|
|
def install_cargo(ctr: dagger.Container) -> dagger.Container:
|
|
bin_paths = [
|
|
"/root/.cargo/bin",
|
|
"/usr/local/sbin",
|
|
"/usr/local/bin",
|
|
"/usr/sbin",
|
|
"/usr/bin",
|
|
"/sbin",
|
|
"/bin",
|
|
]
|
|
|
|
ctr = (
|
|
ctr.with_workdir("/")
|
|
.with_exec(["sh", "-c", "curl https://sh.rustup.rs -sSf | sh -s -- -y"])
|
|
.with_env_variable("PATH", ":".join(bin_paths))
|
|
.with_exec(["cargo", "new", "--bin", "hello"])
|
|
.with_workdir("/hello")
|
|
.with_exec(["cargo", "run", "-v", "-v"])
|
|
)
|
|
|
|
return ctr
|