Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker cross compile fixes v2 #92140

Merged
merged 4 commits into from
Aug 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pkgs/applications/networking/cluster/cni/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ buildGoPackage rec {
license = licenses.asl20;
homepage = "https://github.com/containernetworking/cni";
maintainers = with maintainers; [ offline vdemeester ];
platforms = [ "x86_64-linux" ];
platforms = [ "x86_64-linux" "aarch64-linux" ];
};
}
33 changes: 23 additions & 10 deletions pkgs/applications/virtualization/docker/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ stdenv, lib, fetchFromGitHub, makeWrapper, removeReferencesTo, installShellFiles, pkgconfig
{ stdenv, lib, fetchFromGitHub, fetchpatch, buildGoPackage
, makeWrapper, removeReferencesTo, installShellFiles, pkgconfig
, go-md2man, go, containerd, runc, docker-proxy, tini, libtool
, sqlite, iproute, lvm2, systemd
, btrfs-progs, iptables, e2fsprogs, xz, utillinux, xfsprogs, git
Expand Down Expand Up @@ -56,7 +57,7 @@ rec {
NIX_CFLAGS_COMPILE = "-DMINIMAL=ON";
});
in
stdenv.mkDerivation ((optionalAttrs (stdenv.isLinux) {
buildGoPackage ((optionalAttrs (stdenv.isLinux) {

inherit docker-runc docker-containerd docker-proxy docker-tini;

Expand All @@ -66,7 +67,7 @@ rec {
++ optional (lvm2 == null) "exclude_graphdriver_devicemapper"
++ optional (libseccomp != null) "seccomp";

}) // {
}) // rec {
inherit version rev;

name = "docker-${version}";
Expand All @@ -78,9 +79,19 @@ rec {
sha256 = sha256;
};

nativeBuildInputs = [ installShellFiles pkgconfig ];
patches = [
# Replace hard-coded cross-compiler with $CC
(fetchpatch {
url = https://github.com/docker/docker-ce/commit/2fdfb4404ab811cb00227a3de111437b829e55cf.patch;
sha256 = "1af20bzakhpfhaixc29qnl9iml9255xdinxdnaqp4an0n1xa686a";
})
];

goPackagePath = "github.com/docker/docker-ce";

nativeBuildInputs = [ pkgconfig go-md2man go libtool removeReferencesTo installShellFiles ];
buildInputs = [
makeWrapper removeReferencesTo go-md2man go libtool
makeWrapper
] ++ optionals (stdenv.isLinux) [
sqlite lvm2 btrfs-progs systemd libseccomp
];
Expand All @@ -91,15 +102,15 @@ rec {
export GOCACHE="$TMPDIR/go-cache"
'' + (optionalString (stdenv.isLinux) ''
# build engine
cd ./components/engine
cd ./go/src/${goPackagePath}/components/engine
export AUTO_GOPATH=1
export DOCKER_GITCOMMIT="${rev}"
export VERSION="${version}"
./hack/make.sh dynbinary
cd -
'') + ''
# build cli
cd ./components/cli
cd ./go/src/${goPackagePath}/components/cli
# Mimic AUTO_GOPATH
mkdir -p .gopath/src/github.com/docker/
ln -sf $PWD .gopath/src/github.com/docker/cli
Expand All @@ -113,7 +124,7 @@ rec {
'';

# systemd 230 no longer has libsystemd-journal as a separate entity from libsystemd
patchPhase = ''
postPatch = ''
substituteInPlace ./components/cli/scripts/build/.variables --replace "set -eu" ""
'' + optionalString (stdenv.isLinux) ''
patchShebangs .
Expand All @@ -126,6 +137,7 @@ rec {
extraPath = optionals (stdenv.isLinux) (makeBinPath [ iproute iptables e2fsprogs xz xfsprogs procps utillinux git ]);

installPhase = optionalString (stdenv.isLinux) ''
cd ./go/src/${goPackagePath}
install -Dm755 ./components/engine/bundles/dynbinary-daemon/dockerd $out/libexec/docker/dockerd

makeWrapper $out/libexec/docker/dockerd $out/bin/dockerd \
Expand All @@ -152,13 +164,14 @@ rec {
installShellCompletion --zsh ./components/cli/contrib/completion/zsh/_docker

# Include contributed man pages (cli)
cd ./components/cli
'' + lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
# Generate man pages from cobra commands
echo "Generate man pages from cobra"
cd ./components/cli
mkdir -p ./man/man1
go build -o ./gen-manpages github.com/docker/cli/man
./gen-manpages --root . --target ./man/man1

'' + ''
# Generate legacy pages from markdown
echo "Generate legacy manpages"
./man/md2man-all.sh -q
Expand Down
3 changes: 2 additions & 1 deletion pkgs/applications/virtualization/tini/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ stdenv.mkDerivation rec {

NIX_CFLAGS_COMPILE = "-DPR_SET_CHILD_SUBREAPER=36 -DPR_GET_CHILD_SUBREAPER=37";

buildInputs = [ cmake glibc glibc.static ];
nativeBuildInputs = [ cmake ];
buildInputs = [ glibc glibc.static ];

meta = with stdenv.lib; {
description = "A tiny but valid init for containers";
Expand Down
1 change: 1 addition & 0 deletions pkgs/development/go-packages/generic/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ let

preFixup = preFixup + ''
find $out/bin -type f -exec ${removeExpr removeReferences} '{}' + || true
find $out/libexec -type f -exec ${removeExpr removeReferences} '{}' + || true
'';

strictDeps = true;
Expand Down