View Raw Ebuild
# Copyright 2018-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit go-env go-module
MY_PV=${PV/_/-}
DESCRIPTION="Multi-container orchestration for Docker"
HOMEPAGE="https://github.com/docker/compose"
SRC_URI="https://github.com/docker/compose/archive/v${MY_PV}.tar.gz -> ${P}.gh.tar.gz"
S="${WORKDIR}/compose-${MY_PV}"
LICENSE="Apache-2.0"
SLOT="5"
KEYWORDS="~amd64 ~arm64"
BDEPEND=">=dev-lang/go-1.24.9"
RDEPEND="|| (
app-containers/docker
app-containers/podman[wrapper(+)]
)"
# Network access required for Go module fetching
PROPERTIES="test_network"
RESTRICT="network-sandbox strip"
src_unpack() {
default
go-env_set_compile_environment
}
src_prepare() {
default
# Set Go environment for module handling
export GO111MODULE=on
export GOPROXY="https://proxy.golang.org,direct"
export GOSUMDB="sum.golang.org"
export GOFLAGS="-buildvcs=false"
# Download and vendor Go modules
einfo "Downloading Go modules..."
go mod download -x || die "Failed to download Go modules"
go mod verify || die "Failed to verify Go modules"
go mod vendor || die "Failed to vendor Go modules"
# Do not strip binaries (handled by Portage)
sed -i -e 's/-s -w//' Makefile || die
}
src_configure() {
export CGO_ENABLED=1
export CGO_CFLAGS="${CFLAGS}"
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
export CGO_LDFLAGS="${LDFLAGS}"
export GOFLAGS="${GOFLAGS} -mod=vendor"
}
src_compile() {
export GOFLAGS="${GOFLAGS} -mod=vendor"
emake VERSION=v${PV} GOFLAGS="-buildmode=pie -mod=vendor ${GOFLAGS}"
}
src_test() {
export GOFLAGS="${GOFLAGS} -mod=vendor"
emake test
}
src_install() {
exeinto /usr/libexec/docker/cli-plugins
doexe bin/build/docker-compose
dodoc README.md
}
pkg_postinst() {
ewarn
ewarn "Docker Compose 5.x is a major release with breaking changes:"
ewarn
ewarn " - Internal buildkit builder has been removed"
ewarn " - Build operations are now delegated to Docker Bake"
ewarn " - Compose can now be used as an SDK for third-party integration"
ewarn
ewarn "Use 'docker compose' from the command line."
ewarn
elog "If you need to keep 2.x around, run:"
elog " emerge --noreplace docker-compose:2"
ewarn
}