├── GNUmakefile ├── README.md ├── packages ├── care-v2.2.1.tar.gz ├── cpio-2.11.patch ├── cpio-2.11.tar.gz ├── glibc-2.16.0.tar.gz ├── glibc-2.18.tar.gz ├── libarchive-3.1.2.tar.gz ├── lzo-2.06.tar.gz ├── proot-v5.1.0.tar.gz ├── talloc-2.1.1.tar.gz ├── uthash-master.zip └── zlib-1.2.8.tar.gz └── static ├── care-arm ├── care-v2.1-rc3-x86 ├── care-v2.1-rc3-x86_64 ├── care-x86 ├── care-x86_64 ├── proot-arm ├── proot-arm64 ├── proot-x86 ├── proot-x86_64 └── proot-x86_64-v5.1.0-loader /GNUmakefile: -------------------------------------------------------------------------------- 1 | # How to build PRoot and CARE statically on Slackware64-14.1: 2 | # 3 | # for x86_64: proot -R slackware64-14.0/ \ 4 | # -b /usr/include/linux/prctl.h \ 5 | # -b /usr/include/linux/seccomp.h \ 6 | # make ... 7 | # 8 | # for x86: proot -R slackware-14.0/ 9 | # -b /usr/include/linux/prctl.h \ 10 | # -b /usr/include/linux/seccomp.h \ 11 | # make ... 12 | # 13 | # for arm: proot -R slackwarearm-14.1/ \ 14 | # -b $(which cmake) \ 15 | # -q qemu-arm \ 16 | # make glibc-version=glibc-2.18 ... 17 | # 18 | # for sh4: proot -R gentoo-stage3-sh4a-20130614/ \ 19 | # -b $(which cmake) \ 20 | # -b /usr/share/cmake-2.8 \ 21 | # -b $(which python) \ 22 | # `python -c 'import sys; print " ".join(map(lambda x: "-b " + x, filter(bool, sys.path)))'` \ 23 | # -q qemu-sh4 24 | # make ... 25 | 26 | proot-version = proot-v5.1.0 27 | care-version = care-v2.2.1 28 | glibc-version = glibc-2.16.0 29 | libtalloc-version = talloc-2.1.1 30 | libarchive-version = libarchive-3.1.2 31 | libz-version = zlib-1.2.8 32 | liblzo-version = lzo-2.06 33 | 34 | glibc-license = sh -c '$(prefix)/lib/libc.so.6; cat $(glibc-version)/LICENSES; head -n 16 $(glibc-version)/io/open.c' 35 | libtalloc-license = head -n 27 $(libtalloc-version)/talloc.c 36 | libarchive-license = cat $(libarchive-version)/COPYING 37 | libz-license = head -n 29 $(libz-version)/zlib.h 38 | liblzo-license = head -n 41 $(liblzo-version)/src/lzo1.c 39 | 40 | libc_a = $(prefix)/lib/libc.a 41 | libtalloc_a = $(prefix)/lib/libtalloc.a 42 | libarchive_a = $(prefix)/lib/libarchive.a 43 | libz_a = $(prefix)/lib/libz.a 44 | liblzo_a = $(prefix)/lib/liblzo2.a 45 | 46 | env = CFLAGS="-g -O2 -isystem $(prefix)/include" LDFLAGS="-L$(prefix)/lib" 47 | 48 | VPATH := $(dir $(lastword $(MAKEFILE_LIST))) 49 | packages = $(VPATH)/packages 50 | prefix = $(PWD)/prefix 51 | $(prefix): 52 | mkdir $@ 53 | 54 | $(libc_a): 55 | tar -xzf $(packages)/$(glibc-version).tar.gz 56 | mkdir $(glibc-version)/build 57 | cd $(glibc-version)/build && \ 58 | ../configure --enable-kernel=2.6.0 --prefix=$(prefix) && \ 59 | $(MAKE) && \ 60 | $(MAKE) install 61 | 62 | $(libtalloc_a): $(libc_a) 63 | tar -xzf $(packages)/$(libtalloc-version).tar.gz 64 | cd $(libtalloc-version) && \ 65 | $(env) ./configure --prefix=$(prefix) && \ 66 | $(MAKE) && \ 67 | $(MAKE) install && \ 68 | ar qf $@ bin/default/talloc_3.o 69 | 70 | $(libarchive_a): $(libc_a) $(libz_a) $(liblzo_a) 71 | tar -xzf $(packages)/$(libarchive-version).tar.gz 72 | cd $(libarchive-version) && \ 73 | $(env) cmake -D HAVE_FUTIMESAT:INTERNAL=0 \ 74 | -D HAVE_FUTIMENSAT:INTERNAL=0 \ 75 | -D HAVE_FUTIMES:INTERNAL=0 \ 76 | -D HAVE_LUTIMES:INTERNAL=0 \ 77 | -D HAVE_FUTIMENS:INTERNAL=0 \ 78 | -D HAVE_UTIMENSAT:INTERNAL=0 \ 79 | -DCMAKE_INSTALL_PREFIX:PATH=$(prefix) . && \ 80 | $(MAKE) && \ 81 | $(MAKE) install 82 | 83 | $(libz_a): $(libc_a) 84 | tar -xzf $(packages)/$(libz-version).tar.gz 85 | cd $(libz-version) && \ 86 | $(env) ./configure --prefix=$(prefix) && \ 87 | $(MAKE) && \ 88 | $(MAKE) install 89 | 90 | $(liblzo_a): $(libc_a) 91 | tar -xzf $(packages)/$(liblzo-version).tar.gz 92 | cd $(liblzo-version) && \ 93 | $(env) ./configure --enable-shared --prefix=$(prefix) && \ 94 | $(MAKE) && \ 95 | $(MAKE) install 96 | 97 | all_libs_a = $(libc_a) $(libtalloc_a) $(libarchive_a) $(libz_a) $(liblzo_a) 98 | 99 | proot-licenses: $(libc_a) $(libtalloc_a) 100 | @echo "" >> $@ 101 | @echo "This version of PRoot is statically linked to the following software." >> $@ 102 | @echo "------------------------------------------------------------------------" >> $@ 103 | @echo "glibc:" >> $@ 104 | @echo "" >> $@ 105 | @$(glibc-license) >> $@ 106 | @echo "------------------------------------------------------------------------" >> $@ 107 | @echo "libtalloc:" >> $@ 108 | @echo "" >> $@ 109 | @$(libtalloc-license) >> $@ 110 | @echo "------------------------------------------------------------------------" >> $@ 111 | @echo "The build-system, sources and licences are available on:" >> $@ 112 | @echo "" >> $@ 113 | @echo " https://github.com/cedric-vincent/proot-static-build">> $@ 114 | 115 | care-licenses: $(all_libs_a) 116 | @echo "" >> $@ 117 | @echo "This version of CARE is statically linked to the following software." >> $@ 118 | @echo "------------------------------------------------------------------------" >> $@ 119 | @echo "proot:" >> $@ 120 | @echo "" >> $@ 121 | @echo " * Copyright (C) 2013 STMicroelectronics" >> $@ 122 | @echo " *" >> $@ 123 | @echo " * This program is free software; you can redistribute it and/or" >> $@ 124 | @echo " * modify it under the terms of the GNU General Public License as" >> $@ 125 | @echo " * published by the Free Software Foundation; either version 2 of the" >> $@ 126 | @echo " * License, or (at your option) any later version." >> $@ 127 | @echo " *" >> $@ 128 | @echo " * This program is distributed in the hope that it will be useful, but" >> $@ 129 | @echo " * WITHOUT ANY WARRANTY; without even the implied warranty of" >> $@ 130 | @echo " * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU" >> $@ 131 | @echo " * General Public License for more details." >> $@ 132 | @echo " *" >> $@ 133 | @echo " * You should have received a copy of the GNU General Public License" >> $@ 134 | @echo " * along with this program; if not, write to the Free Software" >> $@ 135 | @echo " * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA" >> $@ 136 | @echo " * 02110-1301 USA." >> $@ 137 | @echo "------------------------------------------------------------------------" >> $@ 138 | @echo "glibc:" >> $@ 139 | @echo "" >> $@ 140 | @$(glibc-license) >> $@ 141 | @echo "------------------------------------------------------------------------" >> $@ 142 | @echo "libtalloc:" >> $@ 143 | @echo "" >> $@ 144 | @$(libtalloc-license) >> $@ 145 | @echo "------------------------------------------------------------------------" >> $@ 146 | @echo "libarchive:" >> $@ 147 | @echo "" >> $@ 148 | @$(libarchive-license) >> $@ 149 | @echo "------------------------------------------------------------------------" >> $@ 150 | @echo "zlib:" >> $@ 151 | @echo "" >> $@ 152 | @$(libz-license) >> $@ 153 | @echo "------------------------------------------------------------------------" >> $@ 154 | @echo "liblzo:" >> $@ 155 | @echo "" >> $@ 156 | @$(liblzo-license) >> $@ 157 | @echo "------------------------------------------------------------------------" >> $@ 158 | @echo "The build-system, sources and licences are available on:" >> $@ 159 | @echo "" >> $@ 160 | @echo " https://github.com/cedric-vincent/proot-static-build">> $@ 161 | 162 | care: $(all_libs_a) care-licenses 163 | tar -xzf $(packages)/$(care-version).tar.gz 164 | cp care-licenses $(care-version)/src/licenses 165 | env OBJECTS="cli/care-licenses.o" LDFLAGS="-static -L$(prefix)/lib -larchive -lz -llzo2" CPPFLAGS="-isystem $(prefix)/include -DCARE_BINARY_IS_PORTABLE " $(MAKE) -C $(care-version)/src/ care GIT=false 166 | cp $(care-version)/src/$@ . 167 | 168 | proot: $(libc_a) $(libtalloc_a) proot-licenses 169 | tar -xzf $(packages)/$(proot-version).tar.gz 170 | cp proot-licenses $(proot-version)/src/licenses 171 | env OBJECTS="cli/proot-licenses.o" LDFLAGS="-static -L$(prefix)/lib" CPPFLAGS="-isystem $(prefix)/include" $(MAKE) -C $(proot-version)/src/ GIT=false 172 | cp $(proot-version)/src/$@ . 173 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # proot-static-build 2 | Build static variants of PRoot 3 | 4 | PRoot static binaries were built using: 5 | 6 | https://github.com/proot-me/proot-static-build 7 | 8 | The ARM one was built on x86_64 using this command: 9 | 10 | # Build PRoot/ARM statically: 11 | cd ~/git/proot-static-build 12 | mkdir build-arm 13 | cd build-arm 14 | proot -R ~/rootfs/slackwarearm-14.1 -b $(which cmake) -q qemu-arm make glibc-version=glibc-2.18 -f ../GNUmakefile proot -j4 15 | 16 | Where slackwarearm-14.1 was created this way: 17 | 18 | # Get Slackware/ARM packages: 19 | wget -r -np http://ftp.arm.slackware.com/slackwarearm/slackwarearm-14.1/slackware/{a,ap,d,e,l,n,tcl}/ 20 | mkdir ~/rootfs/slackwarearm-14.1 21 | 22 | # Extract only a minimal subset (ignore errors): 23 | ls ftp.arm.slackware.com/slackwarearm/slackwarearm-14.1/slackware/{a,l}/*.t?z | xargs -n 1 tar -C ~/rootfs/slackwarearm-14.1 -xf 24 | 25 | # Do a minimal post-installation setup: 26 | mv ~/rootfs/slackwarearm-14.1/lib/incoming/* ~/rootfs/slackwarearm-14.1/lib/ 27 | mv ~/rootfs/slackwarearm-14.1/bin/bash4.new ~/rootfs/slackwarearm-14.1/bin/bash 28 | proot -q qemu-arm -r ~/rootfs/slackwarearm-14.1 /sbin/ldconfig 29 | proot -q qemu-arm -r ~/rootfs/slackwarearm-14.1 ln -s /bin/bash /bin/sh 30 | 31 | # Install all package correcty (ignore warnings): 32 | ls ftp.arm.slackware.com/slackwarearm/slackwarearm-14.1/slackware/*/*.t?z | xargs -n 1 proot -q qemu-arm -S ~/rootfs/slackwarearm-14.1 -b ftp.arm.slackware.com installpkg 33 | -------------------------------------------------------------------------------- /packages/care-v2.2.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/care-v2.2.1.tar.gz -------------------------------------------------------------------------------- /packages/cpio-2.11.patch: -------------------------------------------------------------------------------- 1 | diff -Nawur cpio-2.11/gnu/stdio.in.h cpio-2.11.modified/gnu/stdio.in.h 2 | --- cpio-2.11/gnu/stdio.in.h 2010-03-10 10:27:03.000000000 +0100 3 | +++ cpio-2.11.modified/gnu/stdio.in.h 2013-11-30 14:47:24.000000000 +0100 4 | @@ -135,12 +135,6 @@ 5 | "use gnulib module fflush for portable POSIX compliance"); 6 | #endif 7 | 8 | -/* It is very rare that the developer ever has full control of stdin, 9 | - so any use of gets warrants an unconditional warning. Assume it is 10 | - always declared, since it is required by C89. */ 11 | -#undef gets 12 | -_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); 13 | - 14 | #if @GNULIB_FOPEN@ 15 | # if @REPLACE_FOPEN@ 16 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 17 | diff -Nawur cpio-2.11/src/main.c cpio-2.11.modified/src/main.c 18 | --- cpio-2.11/src/main.c 2010-02-12 12:35:09.000000000 +0100 19 | +++ cpio-2.11.modified/src/main.c 2013-11-30 14:46:10.000000000 +0100 20 | @@ -66,6 +66,7 @@ 21 | "David MacKenzie", 22 | "John Oleynick", 23 | "Sergey Poznyakoff", 24 | + "modified by Cedric Vincent", 25 | NULL 26 | }; 27 | 28 | @@ -724,13 +725,35 @@ 29 | int 30 | main (int argc, char *argv[]) 31 | { 32 | + int care_argc; 33 | + char *care_argv[3]; 34 | + 35 | setlocale (LC_ALL, ""); 36 | bindtextdomain (PACKAGE, LOCALEDIR); 37 | textdomain (PACKAGE); 38 | 39 | set_program_name (argv[0]); 40 | - argp_version_setup ("cpio", program_authors); 41 | - process_args (argc, argv); 42 | + argp_version_setup ("care-extract", program_authors); 43 | + 44 | + if (argc != 2) 45 | + { 46 | + printf("------------------------------------------------------------\n"); 47 | + printf("Usage: %s \n", argv[0]); 48 | + printf("------------------------------------------------------------\n"); 49 | + 50 | + care_argc = 2; 51 | + care_argv[0] = argv[0]; 52 | + care_argv[1] = strdup("--version"); 53 | + } 54 | + else 55 | + { 56 | + care_argc = 3; 57 | + care_argv[0] = argv[0]; 58 | + care_argv[1] = strdup("-idmuvF"); 59 | + care_argv[2] = argv[1]; 60 | + } 61 | + 62 | + process_args (care_argc, care_argv); 63 | 64 | initialize_buffers (); 65 | 66 | -------------------------------------------------------------------------------- /packages/cpio-2.11.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/cpio-2.11.tar.gz -------------------------------------------------------------------------------- /packages/glibc-2.16.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/glibc-2.16.0.tar.gz -------------------------------------------------------------------------------- /packages/glibc-2.18.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/glibc-2.18.tar.gz -------------------------------------------------------------------------------- /packages/libarchive-3.1.2.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/libarchive-3.1.2.tar.gz -------------------------------------------------------------------------------- /packages/lzo-2.06.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/lzo-2.06.tar.gz -------------------------------------------------------------------------------- /packages/proot-v5.1.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/proot-v5.1.0.tar.gz -------------------------------------------------------------------------------- /packages/talloc-2.1.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/talloc-2.1.1.tar.gz -------------------------------------------------------------------------------- /packages/uthash-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/uthash-master.zip -------------------------------------------------------------------------------- /packages/zlib-1.2.8.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/packages/zlib-1.2.8.tar.gz -------------------------------------------------------------------------------- /static/care-arm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/care-arm -------------------------------------------------------------------------------- /static/care-v2.1-rc3-x86: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/care-v2.1-rc3-x86 -------------------------------------------------------------------------------- /static/care-v2.1-rc3-x86_64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/care-v2.1-rc3-x86_64 -------------------------------------------------------------------------------- /static/care-x86: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/care-x86 -------------------------------------------------------------------------------- /static/care-x86_64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/care-x86_64 -------------------------------------------------------------------------------- /static/proot-arm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/proot-arm -------------------------------------------------------------------------------- /static/proot-arm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/proot-arm64 -------------------------------------------------------------------------------- /static/proot-x86: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/proot-x86 -------------------------------------------------------------------------------- /static/proot-x86_64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/proot-x86_64 -------------------------------------------------------------------------------- /static/proot-x86_64-v5.1.0-loader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proot-me/proot-static-build/aa7ec720453edd8245476c6e1e61977f7c30e95c/static/proot-x86_64-v5.1.0-loader --------------------------------------------------------------------------------