new package: runc
This commit is contained in:
parent
0e26eef818
commit
6d2be8e324
24
root-packages/runc/build.sh
Normal file
24
root-packages/runc/build.sh
Normal file
@ -0,0 +1,24 @@
|
||||
TERMUX_PKG_HOMEPAGE=https://www.opencontainers.org/
|
||||
TERMUX_PKG_DESCRIPTION="A tool for spawning and running containers according to the OCI specification"
|
||||
TERMUX_PKG_LICENSE="Apache-2.0"
|
||||
TERMUX_PKG_MAINTAINER="Leonid Plyushch <leonid.plyushch@gmail.com>"
|
||||
TERMUX_PKG_VERSION=1.0.0-rc8
|
||||
TERMUX_PKG_SRCURL=https://github.com/opencontainers/runc/archive/v${TERMUX_PKG_VERSION}.tar.gz
|
||||
TERMUX_PKG_SHA256=efe4ff9bbe49b19074346d65c914d809c0a3e90d062ea9619fe240f931f0b700
|
||||
TERMUX_PKG_DEPENDS="libseccomp"
|
||||
|
||||
termux_step_make() {
|
||||
termux_setup_golang
|
||||
|
||||
export GOPATH="${PWD}/go"
|
||||
|
||||
mkdir -p "${GOPATH}/src/github.com/opencontainers"
|
||||
ln -sf "${TERMUX_PKG_SRCDIR}" "${GOPATH}/src/github.com/opencontainers/runc"
|
||||
|
||||
cd "${GOPATH}/src/github.com/opencontainers/runc" && make
|
||||
}
|
||||
|
||||
termux_step_make_install() {
|
||||
cd "${GOPATH}/src/github.com/opencontainers/runc"
|
||||
install -Dm755 runc "${TERMUX_PREFIX}/bin/runc"
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
diff -uNr runc-1.0.0-rc8/libcontainer/nsenter/cloned_binary.c runc-1.0.0-rc8.mod/libcontainer/nsenter/cloned_binary.c
|
||||
--- runc-1.0.0-rc8/libcontainer/nsenter/cloned_binary.c 2019-04-25 00:48:25.000000000 +0300
|
||||
+++ runc-1.0.0-rc8.mod/libcontainer/nsenter/cloned_binary.c 2019-07-13 22:18:07.323813978 +0300
|
||||
@@ -489,6 +489,30 @@
|
||||
/* Get cheap access to the environment. */
|
||||
extern char **environ;
|
||||
|
||||
+// __procfdname implementation from musl libc.
|
||||
+static void musl_procfdname(char *buf, unsigned fd)
|
||||
+{
|
||||
+ unsigned i, j;
|
||||
+ for (i=0; (buf[i] = "/proc/self/fd/"[i]); i++);
|
||||
+ if (!fd) {
|
||||
+ buf[i] = '0';
|
||||
+ buf[i+1] = 0;
|
||||
+ return;
|
||||
+ }
|
||||
+ for (j=fd; j; j/=10, i++);
|
||||
+ buf[i] = 0;
|
||||
+ for (; fd; fd/=10) buf[--i] = '0' + fd%10;
|
||||
+}
|
||||
+
|
||||
+// fexecve implementation based on one from musl libc.
|
||||
+static int musl_fexecve(int fd, char *const argv[], char *const envp[]) {
|
||||
+ char buf[15 + 3*sizeof(int)];
|
||||
+ musl_procfdname(buf, fd);
|
||||
+ execve(buf, argv, envp);
|
||||
+ if (errno == ENOENT) errno = EBADF;
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
int ensure_cloned_binary(void)
|
||||
{
|
||||
int execfd;
|
||||
@@ -509,7 +533,7 @@
|
||||
if (putenv(CLONED_BINARY_ENV "=1"))
|
||||
goto error;
|
||||
|
||||
- fexecve(execfd, argv, environ);
|
||||
+ musl_fexecve(execfd, argv, environ);
|
||||
error:
|
||||
close(execfd);
|
||||
return -ENOEXEC;
|
Loading…
Reference in New Issue
Block a user