mirror of https://github.com/lapce/lapce.git
242 lines
6.1 KiB
HCL
242 lines
6.1 KiB
HCL
variable "RUST_VERSION" {
|
|
default = "1"
|
|
}
|
|
|
|
variable "XX_VERSION" {
|
|
default = "master"
|
|
}
|
|
|
|
variable "PACKAGE_NAME" {
|
|
default = RELEASE_TAG_NAME == "nightly" ? "lapce-nightly" : "lapce"
|
|
}
|
|
|
|
variable "RELEASE_TAG_NAME" {}
|
|
|
|
target "_common" {
|
|
context = "."
|
|
platforms = ["local"]
|
|
output = ["target"]
|
|
args = {
|
|
PACKAGE_NAME = PACKAGE_NAME
|
|
RELEASE_TAG_NAME = RELEASE_TAG_NAME
|
|
RUST_VERSION = RUST_VERSION
|
|
XX_VERSION = XX_VERSION
|
|
}
|
|
}
|
|
|
|
variable "platforms" {
|
|
default = [
|
|
"linux/amd64",
|
|
"linux/arm64",
|
|
]
|
|
}
|
|
|
|
target "_platforms" {
|
|
platforms = platforms
|
|
}
|
|
|
|
group "default" {
|
|
targets = ["binary"]
|
|
}
|
|
|
|
target "binary" {
|
|
inherits = ["_common"]
|
|
target = "binary"
|
|
args = {
|
|
ZSTD_SYS_USE_PKG_CONFIG = "1"
|
|
LIBGIT2_STATIC = "1"
|
|
LIBSSH2_STATIC = "1"
|
|
LIBZ_SYS_STATIC = "1"
|
|
OPENSSL_STATIC = "1"
|
|
OPENSSL_NO_VENDOR = "0"
|
|
PKG_CONFIG_ALL_STATIC = "1"
|
|
}
|
|
}
|
|
|
|
target "cross-binary" {
|
|
inherits = ["binary", "_platforms"]
|
|
target = "cross-binary"
|
|
}
|
|
|
|
target "package" {
|
|
inherits = ["_common"]
|
|
target = "package"
|
|
args = {
|
|
ZSTD_SYS_USE_PKG_CONFIG = "1"
|
|
LIBGIT2_STATIC = "0"
|
|
LIBSSH2_STATIC = "0"
|
|
LIBZ_SYS_STATIC = "0"
|
|
OPENSSL_STATIC = "0"
|
|
OPENSSL_NO_VENDOR = "1"
|
|
PKG_CONFIG_ALL_STATIC = "0"
|
|
}
|
|
}
|
|
|
|
target "cross-package" {
|
|
inherits = ["package", "_platforms"]
|
|
target = "cross-package"
|
|
}
|
|
|
|
// OS
|
|
|
|
variable "DPKG_FAMILY_PACKAGES" {
|
|
default = [
|
|
"libc6-dev",
|
|
"libssl-dev",
|
|
"zlib1g-dev",
|
|
"libzstd-dev",
|
|
"libvulkan-dev",
|
|
"libwayland-dev",
|
|
"libxcb-shape0-dev",
|
|
"libxcb-xfixes0-dev",
|
|
"libxkbcommon-x11-dev",
|
|
]
|
|
}
|
|
|
|
target "debian" {
|
|
inherits = [build.type]
|
|
name = "${os_name}-${build.os_version}-${build.type}"
|
|
dockerfile = "extra/linux/docker/${os_name}/Dockerfile"
|
|
args = {
|
|
DISTRIBUTION_NAME = os_name
|
|
DISTRIBUTION_VERSION = build.os_version
|
|
DISTRIBUTION_PACKAGES = join(" ", coalesce(build.packages, DPKG_FAMILY_PACKAGES))
|
|
}
|
|
platforms = coalesce(build.platforms, platforms)
|
|
matrix = {
|
|
os_name = ["debian"]
|
|
build = [
|
|
{ packages = null, platforms = null, type = "package", os_version = "bullseye" }, # 11
|
|
{ packages = null, platforms = null, type = "package", os_version = "bookworm" }, # 12
|
|
]
|
|
}
|
|
}
|
|
|
|
target "cross-debian" {
|
|
inherits = ["debian", "cross-package"]
|
|
}
|
|
|
|
target "ubuntu" {
|
|
inherits = [build.type]
|
|
name = "${os_name}-${build.os_version}-${build.type}"
|
|
dockerfile = "extra/linux/docker/${os_name}/Dockerfile"
|
|
args = {
|
|
DISTRIBUTION_NAME = os_name
|
|
DISTRIBUTION_VERSION = build.os_version
|
|
DISTRIBUTION_PACKAGES = join(" ", coalesce(build.packages, DPKG_FAMILY_PACKAGES))
|
|
}
|
|
platforms = coalesce(build.platforms, platforms)
|
|
matrix = {
|
|
os_name = ["ubuntu"]
|
|
build = [
|
|
{ packages = null, platforms = null, type = "package", os_version = "bionic" }, # 18.04
|
|
{ packages = null, platforms = null, type = "package", os_version = "focal" }, # 20.04
|
|
{ packages = null, platforms = null, type = "package", os_version = "jammy" }, # 22.04
|
|
{ packages = null, platforms = null, type = "package", os_version = "kinetic" }, # 22.10
|
|
{ packages = null, platforms = null, type = "package", os_version = "lunar" }, # 23.04
|
|
{ packages = null, platforms = null, type = "package", os_version = "mantic" }, # 23.10
|
|
{ packages = null, platforms = null, type = "package", os_version = "noble" }, # 24.04
|
|
# static binary, it looks ugly to define the target this way
|
|
# but I don't have a better way to make it more friendly on CLI side without
|
|
# more terrible code-wise way to implement it
|
|
{ packages = null, platforms = null, type = "binary", os_version = "focal" }, # 20.04
|
|
]
|
|
}
|
|
}
|
|
|
|
target "cross-ubuntu" {
|
|
inherits = ["ubuntu", "cross-package"]
|
|
}
|
|
|
|
variable "RHEL_FAMILY_PACKAGES" {
|
|
default = [
|
|
"openssl-devel",
|
|
"wayland-devel",
|
|
"vulkan-loader-devel",
|
|
"libzstd-devel",
|
|
"libxcb-devel",
|
|
"libxkbcommon-x11-devel",
|
|
]
|
|
}
|
|
|
|
target "fedora" {
|
|
inherits = [build.type]
|
|
name = "${name}-${build.version}-${build.type}"
|
|
dockerfile = "extra/linux/docker/${name}/Dockerfile"
|
|
args = {
|
|
XX_VERSION = "test"
|
|
|
|
DISTRIBUTION_NAME = name
|
|
DISTRIBUTION_VERSION = build.version
|
|
DISTRIBUTION_PACKAGES = join(" ", coalesce(build.packages, RHEL_FAMILY_PACKAGES))
|
|
}
|
|
// platforms = coalesce(build.platforms, platforms)
|
|
platforms = ["linux/amd64"]
|
|
matrix = {
|
|
name = ["fedora"]
|
|
build = [
|
|
{ packages = null, platforms = null, type = "package", version = "39" },
|
|
{ packages = null, platforms = null, type = "package", version = "40" },
|
|
{ packages = null, platforms = null, type = "package", version = "41" },
|
|
{ packages = null, platforms = null, type = "package", version = "rawhide" },
|
|
]
|
|
}
|
|
}
|
|
|
|
target "cross-fedora" {
|
|
inherits = ["fedora", "cross-package"]
|
|
}
|
|
|
|
variable "APK_FAMILY_PACKAGES" {
|
|
default = [
|
|
"make",
|
|
"clang",
|
|
"git",
|
|
"lld",
|
|
"build-base",
|
|
"rustup",
|
|
"openssl-dev",
|
|
"openssl-libs-static",
|
|
"libssh2-static",
|
|
"libgit2-static",
|
|
"fontconfig-static",
|
|
"freetype-static",
|
|
"zlib-static",
|
|
"gcc",
|
|
"zstd-static",
|
|
"libxcb-static",
|
|
"libxkbcommon-static",
|
|
"vulkan-loader-dev",
|
|
]
|
|
}
|
|
|
|
target "alpine" {
|
|
inherits = ["binary"]
|
|
name = format("${os_name}-%s", replace(build.os_version, ".", "-"))
|
|
dockerfile = "extra/linux/docker/${os_name}/Dockerfile"
|
|
args = {
|
|
DISTRIBUTION_NAME = os_name
|
|
DISTRIBUTION_VERSION = build.os_version
|
|
DISTRIBUTION_PACKAGES = join(" ", coalesce(build.packages, APK_FAMILY_PACKAGES))
|
|
}
|
|
platforms = coalesce(build.platforms, platforms)
|
|
matrix = {
|
|
os_name = ["alpine"]
|
|
build = [
|
|
{ os_version = "3.20", packages = null, platforms = null },
|
|
{ os_version = "3.18", packages = null, platforms = null },
|
|
]
|
|
}
|
|
}
|
|
|
|
target "cross-alpine" {
|
|
inherits = ["alpine-3-20", "cross-binary"]
|
|
}
|
|
|
|
target "alpine-dev" {
|
|
inherits = ["alpine-3-20"]
|
|
target = "dev"
|
|
tags = ["lapce/lapce:dev"]
|
|
output = ["type=docker"]
|
|
}
|