From e3e2fef4ccdf617999d85f83c772083537142b43 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Fri, 22 Apr 2016 01:40:57 -0700 Subject: [PATCH 1/4] containerd: add package --- .../addon-depends/containerd/package.mk | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 packages/addons/addon-depends/containerd/package.mk diff --git a/packages/addons/addon-depends/containerd/package.mk b/packages/addons/addon-depends/containerd/package.mk new file mode 100644 index 0000000000..04139d8790 --- /dev/null +++ b/packages/addons/addon-depends/containerd/package.mk @@ -0,0 +1,77 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv) +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="containerd" +PKG_VERSION="d2f0386" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="APL" +PKG_SITE="https://containerd.tools/" +PKG_URL="https://github.com/docker/containerd/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_HOST="toolchain go" +PKG_PRIORITY="optional" +PKG_SECTION="system" +PKG_SHORTDESC="containerd is a daemon to control runC" +PKG_LONGDESC="containerd is a daemon to control runC, built for performance and density. containerd leverages runC's advanced features such as seccomp and user namespace support as well as checkpoint and restore for cloning and live migration of containers." + +PKG_IS_ADDON="no" +PKG_AUTORECONF="no" + +pre_make_target() { + case $TARGET_ARCH in + x86_64) + export GOARCH=amd64 + ;; + arm) + export GOARCH=arm + + case $TARGET_CPU in + arm1176jzf-s) + export GOARM=6 + ;; + cortex-a7) + export GOARM=7 + ;; + esac + ;; + esac + + export GOOS=linux + export CGO_ENABLED=1 + export CGO_NO_EMULATION=1 + export CGO_CFLAGS=$CFLAGS + export LDFLAGS="-w -extldflags -static -X github.com/docker/containerd.GitCommit=${PKG_VERSION} -extld $TARGET_CC" + export GOLANG=$ROOT/$TOOLCHAIN/lib/golang/bin/go + export GOPATH=$ROOT/$PKG_BUILD.gopath:$ROOT/$PKG_BUILD/vendor/ + export GOROOT=$ROOT/$TOOLCHAIN/lib/golang + export PATH=$PATH:$GOROOT/bin + + ln -fs $ROOT/$PKG_BUILD $ROOT/$PKG_BUILD/vendor/src/github.com/docker/containerd +} + +make_target() { + mkdir -p bin + $GOLANG build -v -o bin/ctr -a -tags "static_build" -ldflags "$LDFLAGS" ./ctr + $GOLANG build -v -o bin/containerd -a -tags "static_build" -ldflags "$LDFLAGS" ./containerd + $GOLANG build -v -o bin/containerd-shim -a -tags "static_build" -ldflags "$LDFLAGS" ./containerd-shim +} + +makeinstall_target() { + : +} + From 5cc1faffb186b2c87ec52af00000230e5f1f573a Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Fri, 22 Apr 2016 01:40:57 -0700 Subject: [PATCH 2/4] runc: add package --- packages/addons/addon-depends/runc/package.mk | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 packages/addons/addon-depends/runc/package.mk diff --git a/packages/addons/addon-depends/runc/package.mk b/packages/addons/addon-depends/runc/package.mk new file mode 100644 index 0000000000..22fc1d453e --- /dev/null +++ b/packages/addons/addon-depends/runc/package.mk @@ -0,0 +1,74 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv) +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="runc" +PKG_VERSION="e874369" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="APL" +PKG_SITE="https://github.com/opencontainers/runc" +PKG_URL="https://github.com/opencontainers/runc/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_HOST="toolchain go" +PKG_PRIORITY="optional" +PKG_SECTION="system" +PKG_SHORTDESC="runc is a CLI tool for spawning and running containers according to the OCI specification" +PKG_LONGDESC="runc is a CLI tool for spawning and running containers according to the OCI specification" + +PKG_IS_ADDON="no" +PKG_AUTORECONF="no" + +pre_make_target() { + case $TARGET_ARCH in + x86_64) + export GOARCH=amd64 + ;; + arm) + export GOARCH=arm + + case $TARGET_CPU in + arm1176jzf-s) + export GOARM=6 + ;; + cortex-a7) + export GOARM=7 + ;; + esac + ;; + esac + + export GOOS=linux + export CGO_ENABLED=1 + export CGO_NO_EMULATION=1 + export CGO_CFLAGS=$CFLAGS + export LDFLAGS="-w -extldflags -static -X main.gitCommit=${PKG_VERSION} -extld $TARGET_CC" + export GOLANG=$ROOT/$TOOLCHAIN/lib/golang/bin/go + export GOPATH=$ROOT/$PKG_BUILD.gopath:$ROOT/$PKG_BUILD/Godeps/_workspace/ + export GOROOT=$ROOT/$TOOLCHAIN/lib/golang + export PATH=$PATH:$GOROOT/bin + + ln -fs $ROOT/$PKG_BUILD $ROOT/$PKG_BUILD/Godeps/_workspace/src/github.com/opencontainers/runc +} + +make_target() { + mkdir -p bin + $GOLANG build -v -o bin/runc -a -tags "cgo static_build" -ldflags "$LDFLAGS" ./ +} + +makeinstall_target() { + : +} From b861a8bb212e5927d310ed4bad26d6a74bc1b61f Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Fri, 22 Apr 2016 01:40:57 -0700 Subject: [PATCH 3/4] go: add patch for our ca-cert location --- .../go/patches/go-0001-add-ca-cert-location.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/addons/addon-depends/go/patches/go-0001-add-ca-cert-location.patch diff --git a/packages/addons/addon-depends/go/patches/go-0001-add-ca-cert-location.patch b/packages/addons/addon-depends/go/patches/go-0001-add-ca-cert-location.patch new file mode 100644 index 0000000000..39ca1a380f --- /dev/null +++ b/packages/addons/addon-depends/go/patches/go-0001-add-ca-cert-location.patch @@ -0,0 +1,11 @@ +diff -Naur a/src/crypto/x509/root_unix.go b/src/crypto/x509/root_unix.go +--- a/src/crypto/x509/root_unix.go 2016-04-19 16:27:35.000000000 -0700 ++++ b/src/crypto/x509/root_unix.go 2016-04-22 01:21:02.884977461 -0700 +@@ -13,6 +13,7 @@ + var certDirectories = []string{ + "/etc/ssl/certs", // SLES10/SLES11, https://golang.org/issue/12139 + "/system/etc/security/cacerts", // Android ++ "/etc/ssl", // LibreELEC + } + + func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { From b97eeac8dbe3f9f1cf6c2521c9d01c95252c771e Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Fri, 22 Apr 2016 01:40:57 -0700 Subject: [PATCH 4/4] docker: fix build for 1.11.0 --- packages/addons/service/docker/package.mk | 16 +++++++++++----- .../source/systemd/service.system.docker.service | 1 + 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/addons/service/docker/package.mk b/packages/addons/service/docker/package.mk index 1b457ec512..239d2f1197 100644 --- a/packages/addons/service/docker/package.mk +++ b/packages/addons/service/docker/package.mk @@ -24,7 +24,7 @@ PKG_ADDON_PROJECTS="Generic RPi RPi2" PKG_LICENSE="ASL" PKG_SITE="http://www.docker.com/" PKG_URL="https://github.com/docker/docker/archive/v${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain sqlite go:host" +PKG_DEPENDS_TARGET="toolchain sqlite go:host containerd runc" PKG_PRIORITY="optional" PKG_SECTION="service/system" PKG_SHORTDESC="Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere." @@ -70,8 +70,6 @@ configure_target() { export GOROOT=$ROOT/$TOOLCHAIN/lib/golang export PATH=$PATH:$GOROOT/bin - ./hack/vendor.sh - ln -fs $ROOT/$PKG_BUILD $ROOT/$PKG_BUILD/vendor/src/github.com/docker/docker # used for docker version @@ -91,6 +89,14 @@ makeinstall_target() { } addon() { - mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin/ - cp -a $ROOT/$PKG_BUILD/bin/docker $ADDON_BUILD/$PKG_ADDON_ID/bin/ + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $ROOT/$PKG_BUILD/bin/docker $ADDON_BUILD/$PKG_ADDON_ID/bin + + # containerd + cp -P $(get_build_dir containerd)/bin/containerd $ADDON_BUILD/$PKG_ADDON_ID/bin/docker-containerd + cp -P $(get_build_dir containerd)/bin/containerd-shim $ADDON_BUILD/$PKG_ADDON_ID/bin/docker-containerd-shim + cp -P $(get_build_dir containerd)/bin/ctr $ADDON_BUILD/$PKG_ADDON_ID/bin/docker-containerd-ctr + + # runc + cp -P $(get_build_dir runc)/bin/runc $ADDON_BUILD/$PKG_ADDON_ID/bin/docker-runc } diff --git a/packages/addons/service/docker/source/systemd/service.system.docker.service b/packages/addons/service/docker/source/systemd/service.system.docker.service index 0a2d5add32..285c7a6fdf 100644 --- a/packages/addons/service/docker/source/systemd/service.system.docker.service +++ b/packages/addons/service/docker/source/systemd/service.system.docker.service @@ -6,6 +6,7 @@ Requires=docker.socket [Service] Type=notify +Environment=PATH=/bin:/sbin:/usr/bin:/usr/sbin:/storage/.kodi/addons/service.system.docker/bin ExecStartPre=/storage/.kodi/addons/service.system.docker/bin/docker-config EnvironmentFile=-/storage/.kodi/userdata/addon_data/service.system.docker/config/docker.conf ExecStart=/storage/.kodi/addons/service.system.docker/bin/docker daemon -H fd:// $DOCKER_DAEMON_OPTS $DOCKER_STORAGE_OPTS