mirror of
				https://github.com/bensuperpc/dockcross.git
				synced 2025-10-30 23:56:23 +01:00 
			
		
		
		
	| @@ -44,6 +44,25 @@ jobs: | ||||
|       - save_cache: | ||||
|           key: android-arm-assets-{{ .Revision }} | ||||
|           paths: ~/docker/android-arm.tar | ||||
|   android-arm64: | ||||
|     <<: *build-settings | ||||
|     steps: | ||||
|       - restore_cache: | ||||
|           key: base-assets-{{ .Revision }} | ||||
|       - run: | ||||
|          name: android-arm64 build | ||||
|          no_output_timeout: 1.5h | ||||
|          command: | | ||||
|            docker load -i ~/docker/base.tar | ||||
|            make android-arm64 | ||||
|            docker save -o ~/docker/android-arm64.tar dockcross/android-arm64:latest | ||||
|       - run: | ||||
|          name: android-arm64 test | ||||
|          command: | | ||||
|            make android-arm64.test | ||||
|       - save_cache: | ||||
|           key: android-arm64-assets-{{ .Revision }} | ||||
|           paths: ~/docker/android-arm64.tar | ||||
|   browser-asmjs: | ||||
|     <<: *build-settings | ||||
|     steps: | ||||
| @@ -68,17 +87,18 @@ jobs: | ||||
|     steps: | ||||
|       - restore_cache: | ||||
|           key: base-assets-{{ .Revision }} | ||||
|       - run: | ||||
|          name: linux-arm64 build | ||||
|          no_output_timeout: 1.5h | ||||
|          command: | | ||||
|            docker load -i ~/docker/base.tar | ||||
|            make linux-arm64 | ||||
|            docker save -o ~/docker/linux-arm64.tar dockcross/linux-arm64:latest | ||||
|       - run: | ||||
|          name: linux-arm64 test | ||||
|          command: | | ||||
|            make linux-arm64.test | ||||
|       # Image build currently broken. See #209 | ||||
|       #- run: | ||||
|          #name: linux-arm64 build | ||||
|          #no_output_timeout: 1.5h | ||||
|          #command: | | ||||
|            #docker load -i ~/docker/base.tar | ||||
|            #make linux-arm64 | ||||
|            #docker save -o ~/docker/linux-arm64.tar dockcross/linux-arm64:latest | ||||
|       #- run: | ||||
|          #name: linux-arm64 test | ||||
|          #command: | | ||||
|            #make linux-arm64.test | ||||
|       - save_cache: | ||||
|           key: linux-arm64-assets-{{ .Revision }} | ||||
|           paths: ~/docker/linux-arm64.tar | ||||
| @@ -87,17 +107,18 @@ jobs: | ||||
|     steps: | ||||
|       - restore_cache: | ||||
|           key: base-assets-{{ .Revision }} | ||||
|       - run: | ||||
|          name: linux-armv5 build | ||||
|          no_output_timeout: 1.5h | ||||
|          command: | | ||||
|            docker load -i ~/docker/base.tar | ||||
|            make linux-armv5 | ||||
|            docker save -o ~/docker/linux-armv5.tar dockcross/linux-armv5:latest | ||||
|       - run: | ||||
|          name: linux-armv5 test | ||||
|          command: | | ||||
|            make linux-armv5.test | ||||
|       # Image build currently broken. See #209 | ||||
|       #- run: | ||||
|          #name: linux-armv5 build | ||||
|          #no_output_timeout: 1.5h | ||||
|          #command: | | ||||
|            #docker load -i ~/docker/base.tar | ||||
|            #make linux-armv5 | ||||
|            #docker save -o ~/docker/linux-armv5.tar dockcross/linux-armv5:latest | ||||
|       #- run: | ||||
|          #name: linux-armv5 test | ||||
|          #command: | | ||||
|            #make linux-armv5.test | ||||
|       - save_cache: | ||||
|           key: linux-armv5-assets-{{ .Revision }} | ||||
|           paths: ~/docker/linux-armv5.tar | ||||
| @@ -125,17 +146,18 @@ jobs: | ||||
|     steps: | ||||
|       - restore_cache: | ||||
|           key: base-assets-{{ .Revision }} | ||||
|       - run: | ||||
|          name: linux-armv7 build | ||||
|          no_output_timeout: 1.5h | ||||
|          command: | | ||||
|            docker load -i ~/docker/base.tar | ||||
|            make linux-armv7 | ||||
|            docker save -o ~/docker/linux-armv7.tar dockcross/linux-armv7:latest | ||||
|       - run: | ||||
|          name: linux-armv7 test | ||||
|          command: | | ||||
|            make linux-armv7.test | ||||
|       # Image build currently broken. See #209 | ||||
|       #- run: | ||||
|          #name: linux-armv7 build | ||||
|          #no_output_timeout: 1.5h | ||||
|          #command: | | ||||
|            #docker load -i ~/docker/base.tar | ||||
|            #make linux-armv7 | ||||
|            #docker save -o ~/docker/linux-armv7.tar dockcross/linux-armv7:latest | ||||
|       #- run: | ||||
|          #name: linux-armv7 test | ||||
|          #command: | | ||||
|            #make linux-armv7.test | ||||
|       - save_cache: | ||||
|           key: linux-armv7-assets-{{ .Revision }} | ||||
|           paths: ~/docker/linux-armv7.tar | ||||
| @@ -144,17 +166,18 @@ jobs: | ||||
|     steps: | ||||
|       - restore_cache: | ||||
|           key: base-assets-{{ .Revision }} | ||||
|       - run: | ||||
|          name: linux-mipsel build | ||||
|          no_output_timeout: 1.5h | ||||
|          command: | | ||||
|            docker load -i ~/docker/base.tar | ||||
|            make linux-mipsel | ||||
|            docker save -o ~/docker/linux-mipsel.tar dockcross/linux-mipsel:latest | ||||
|       - run: | ||||
|          name: linux-mipsel test | ||||
|          command: | | ||||
|            make linux-mipsel.test | ||||
|       # Image build currently broken. See #209 | ||||
|       #- run: | ||||
|          #name: linux-mipsel build | ||||
|          #no_output_timeout: 1.5h | ||||
|          #command: | | ||||
|            #docker load -i ~/docker/base.tar | ||||
|            #make linux-mipsel | ||||
|            #docker save -o ~/docker/linux-mipsel.tar dockcross/linux-mipsel:latest | ||||
|       #- run: | ||||
|          #name: linux-mipsel test | ||||
|          #command: | | ||||
|            #make linux-mipsel.test | ||||
|       - save_cache: | ||||
|           key: linux-mipsel-assets-{{ .Revision }} | ||||
|           paths: ~/docker/linux-mipsel.tar | ||||
| @@ -182,17 +205,18 @@ jobs: | ||||
|     steps: | ||||
|       - restore_cache: | ||||
|           key: base-assets-{{ .Revision }} | ||||
|       - run: | ||||
|          name: linux-ppc64le build | ||||
|          no_output_timeout: 1.5h | ||||
|          command: | | ||||
|            docker load -i ~/docker/base.tar | ||||
|            make linux-ppc64le | ||||
|            docker save -o ~/docker/linux-ppc64le.tar dockcross/linux-ppc64le:latest | ||||
|       - run: | ||||
|          name: linux-ppc64le test | ||||
|          command: | | ||||
|            make linux-ppc64le.test | ||||
|       # Image build currently broken. See #209 | ||||
|       #- run: | ||||
|          #name: linux-ppc64le build | ||||
|          #no_output_timeout: 1.5h | ||||
|          #command: | | ||||
|            #docker load -i ~/docker/base.tar | ||||
|            #make linux-ppc64le | ||||
|            #docker save -o ~/docker/linux-ppc64le.tar dockcross/linux-ppc64le:latest | ||||
|       #- run: | ||||
|          #name: linux-ppc64le test | ||||
|          #command: | | ||||
|            #make linux-ppc64le.test | ||||
|       - save_cache: | ||||
|           key: linux-ppc64le-assets-{{ .Revision }} | ||||
|           paths: ~/docker/linux-ppc64le.tar | ||||
| @@ -333,6 +357,16 @@ jobs: | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/android-arm:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: android-arm64-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
|           name: Deploy android-arm64 | ||||
|           command: | | ||||
|             docker load -i ~/docker/android-arm64.tar | ||||
|             if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/android-arm64:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: browser-asmjs-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
| @@ -343,26 +377,28 @@ jobs: | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/browser-asmjs:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: linux-arm64-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
|           name: Deploy linux-arm64 | ||||
|           command: | | ||||
|             docker load -i ~/docker/linux-arm64.tar | ||||
|             if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-arm64:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: linux-armv5-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
|           name: Deploy linux-armv5 | ||||
|           command: | | ||||
|             docker load -i ~/docker/linux-armv5.tar | ||||
|             if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-armv5:latest | ||||
|             fi | ||||
|       # Image build currently broken. See #209 | ||||
|       #- restore_cache: | ||||
|           #key: linux-arm64-assets-{{ .Revision }} | ||||
|       #- deploy: | ||||
|           #name: Deploy linux-arm64 | ||||
|           #command: | | ||||
|             #docker load -i ~/docker/linux-arm64.tar | ||||
|             #if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               #docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               #docker push dockcross/linux-arm64:latest | ||||
|             #fi | ||||
|       # Image build currently broken. See #209 | ||||
|       #- restore_cache: | ||||
|           #key: linux-armv5-assets-{{ .Revision }} | ||||
|       #- deploy: | ||||
|           #name: Deploy linux-armv5 | ||||
|           #command: | | ||||
|             #docker load -i ~/docker/linux-armv5.tar | ||||
|             #if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               #docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               #docker push dockcross/linux-armv5:latest | ||||
|             #fi | ||||
|       - restore_cache: | ||||
|           key: linux-armv6-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
| @@ -373,26 +409,28 @@ jobs: | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-armv6:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: linux-armv7-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
|           name: Deploy linux-armv7 | ||||
|           command: | | ||||
|             docker load -i ~/docker/linux-armv7.tar | ||||
|             if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-armv7:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: linux-mipsel-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
|           name: Deploy linux-mipsel | ||||
|           command: | | ||||
|             docker load -i ~/docker/linux-mipsel.tar | ||||
|             if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-mipsel:latest | ||||
|             fi | ||||
|       # Image build currently broken. See #209 | ||||
|       #- restore_cache: | ||||
|           #key: linux-armv7-assets-{{ .Revision }} | ||||
|       #- deploy: | ||||
|           #name: Deploy linux-armv7 | ||||
|           #command: | | ||||
|             #docker load -i ~/docker/linux-armv7.tar | ||||
|             #if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               #docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               #docker push dockcross/linux-armv7:latest | ||||
|             #fi | ||||
|       # Image build currently broken. See #209 | ||||
|       #- restore_cache: | ||||
|           #key: linux-mipsel-assets-{{ .Revision }} | ||||
|       #- deploy: | ||||
|           #name: Deploy linux-mipsel | ||||
|           #command: | | ||||
|             #docker load -i ~/docker/linux-mipsel.tar | ||||
|             #if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               #docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               #docker push dockcross/linux-mipsel:latest | ||||
|             #fi | ||||
|       - restore_cache: | ||||
|           key: linux-s390x-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
| @@ -403,16 +441,17 @@ jobs: | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-s390x:latest | ||||
|             fi | ||||
|       - restore_cache: | ||||
|           key: linux-ppc64le-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
|           name: Deploy linux-ppc64le | ||||
|           command: | | ||||
|             docker load -i ~/docker/linux-ppc64le.tar | ||||
|             if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               docker push dockcross/linux-ppc64le:latest | ||||
|             fi | ||||
|       # Image build currently broken. See #209 | ||||
|       #- restore_cache: | ||||
|           #key: linux-ppc64le-assets-{{ .Revision }} | ||||
|       #- deploy: | ||||
|           #name: Deploy linux-ppc64le | ||||
|           #command: | | ||||
|             #docker load -i ~/docker/linux-ppc64le.tar | ||||
|             #if [ "${CIRCLE_BRANCH}" == "master" ]; then | ||||
|               #docker login -u $DOCKER_USER -p $DOCKER_PASS | ||||
|               #docker push dockcross/linux-ppc64le:latest | ||||
|             #fi | ||||
|       - restore_cache: | ||||
|           key: linux-x64-assets-{{ .Revision }} | ||||
|       - deploy: | ||||
| @@ -482,30 +521,38 @@ workflows: | ||||
|         - android-arm: | ||||
|             requires: | ||||
|               - base | ||||
|         - android-arm64: | ||||
|             requires: | ||||
|               - base | ||||
|         - browser-asmjs: | ||||
|             requires: | ||||
|               - base | ||||
|         - linux-arm64: | ||||
|             requires: | ||||
|               - base | ||||
|         - linux-armv5: | ||||
|             requires: | ||||
|               - base | ||||
|         # Image build currently broken. See #209 | ||||
|         #- linux-arm64: | ||||
|             #requires: | ||||
|               #- base | ||||
|         # Image build currently broken. See #209 | ||||
|         #- linux-armv5: | ||||
|             #requires: | ||||
|               #- base | ||||
|         - linux-armv6: | ||||
|             requires: | ||||
|               - base | ||||
|         - linux-armv7: | ||||
|             requires: | ||||
|               - base | ||||
|         - linux-mipsel: | ||||
|             requires: | ||||
|               - base | ||||
|         # Image build currently broken. See #209 | ||||
|         #- linux-armv7: | ||||
|             #requires: | ||||
|               #- base | ||||
|         # Image build currently broken. See #209 | ||||
|         #- linux-mipsel: | ||||
|             #requires: | ||||
|               #- base | ||||
|         - linux-s390x: | ||||
|             requires: | ||||
|               - base | ||||
|         - linux-ppc64le: | ||||
|             requires: | ||||
|               - base | ||||
|         # Image build currently broken. See #209 | ||||
|         #- linux-ppc64le: | ||||
|             #requires: | ||||
|               #- base | ||||
|         - linux-x64: | ||||
|             requires: | ||||
|               - base | ||||
| @@ -528,14 +575,18 @@ workflows: | ||||
|             requires: | ||||
|               - base | ||||
|               - android-arm | ||||
|               - android-arm64 | ||||
|               - browser-asmjs | ||||
|               - linux-arm64 | ||||
|               - linux-armv5 | ||||
|               # Image build currently broken. See #209 | ||||
|               #- linux-arm64 | ||||
|               #- linux-armv5 | ||||
|               - linux-armv6 | ||||
|               - linux-armv7 | ||||
|               - linux-mipsel | ||||
|               # Image build currently broken. See #209 | ||||
|               #- linux-armv7 | ||||
|               #- linux-mipsel | ||||
|               - linux-s390x | ||||
|               - linux-ppc64le | ||||
|               # Image build currently broken. See #209 | ||||
|               #- linux-ppc64le | ||||
|               - linux-x64 | ||||
|               - linux-x86 | ||||
|               - manylinux-x64 | ||||
|   | ||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| Copyright (c) 2015 Steeve Morin, Rob Burns, Matthew McCormick | ||||
| Copyright (c) 2015, 2016, 2017, 2018 Steeve Morin, Rob Burns, Matthew McCormick, Jean-Christophe-Fillion-Robin | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|   | ||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -13,7 +13,7 @@ ORG = dockcross | ||||
| BIN = ./bin | ||||
|  | ||||
| # These images are built using the "build implicit rule" | ||||
| STANDARD_IMAGES = linux-s390x android-arm linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mips linux-mipsel linux-ppc64le windows-x86 windows-x64 | ||||
| STANDARD_IMAGES = linux-s390x android-arm android-arm64 linux-x86 linux-x64 linux-arm64 linux-armv5 linux-armv6 linux-armv7 linux-mips linux-mipsel linux-ppc64le windows-x86 windows-x64 | ||||
|  | ||||
| # Generated Dockerfiles. | ||||
| GEN_IMAGES = linux-s390x linux-mips manylinux-x86 manylinux-x64 browser-asmjs | ||||
|   | ||||
							
								
								
									
										135
									
								
								README.rst
									
									
									
									
									
								
							
							
						
						
									
										135
									
								
								README.rst
									
									
									
									
									
								
							| @@ -12,6 +12,7 @@ Features | ||||
|  | ||||
| * Pre-built and configured toolchains for cross compiling. | ||||
| * Most images also contain an emulator for the target system. | ||||
| * Clean separation of build tools, source code, and build artifacts. | ||||
| * Commands in the container are run as the calling user, so that any created files have the expected ownership, (i.e. not root). | ||||
| * Make variables (`CC`, `LD` etc) are set to point to the appropriate tools in the container. | ||||
| * Recent `CMake <https://cmake.org>`_ and ninja are precompiled. | ||||
| @@ -20,6 +21,61 @@ Features | ||||
| * Current directory is mounted as the container's workdir, ``/work``. | ||||
| * Works with the `Docker for Mac <https://docs.docker.com/docker-for-mac/>`_ and `Docker for Windows <https://docs.docker.com/docker-for-windows/>`_. | ||||
|  | ||||
| Examples | ||||
| -------- | ||||
|  | ||||
| 1. ``dockcross make``: Build the *Makefile* in the current directory. | ||||
| 2. ``dockcross cmake -Bbuild -H. -GNinja``: Run CMake with a build directory | ||||
|    ``./build`` for a *CMakeLists.txt* file in the current directory and generate | ||||
|    ``ninja`` build configuration files. | ||||
| 3. ``dockcross ninja -Cbuild``: Run ninja in the ``./build`` directory. | ||||
| 4. ``dockcross bash -c '$CC test/C/hello.c -o hello'``: Build the *hello.c* file | ||||
|    with the compiler identified with the ``CC`` environmental variable in the | ||||
|    build environment. | ||||
| 5. ``dockcross bash``: Run an interactive shell in the build environment. | ||||
|  | ||||
| Note that commands are executed verbatim. If any shell processing for | ||||
| environment variable expansion or redirection is required, please use | ||||
| `bash -c 'command args...'`. | ||||
|  | ||||
| Installation | ||||
| ------------ | ||||
|  | ||||
| This image does not need to be run manually. Instead, there is a helper script | ||||
| to execute build commands on source code existing on the local host filesystem. This | ||||
| script is bundled with the image. | ||||
|  | ||||
| To install the helper script, run one of the images with no arguments, and | ||||
| redirect the output to a file:: | ||||
|  | ||||
|   docker run --rm CROSS_COMPILER_IMAGE_NAME > ./dockcross | ||||
|   chmod +x ./dockcross | ||||
|   mv ./dockcross ~/bin/ | ||||
|  | ||||
| Where `CROSS_COMPILER_IMAGE_NAME` is the name of the cross-compiler toolchain | ||||
| Docker instance, e.g. `dockcross/linux-armv7`. | ||||
|  | ||||
| Only 64-bit x86_64 images are provided; a 64-bit x86_64 host system is required. | ||||
|  | ||||
| Usage | ||||
| ----- | ||||
|  | ||||
| For the impatient, here's how to compile a hello world for armv7:: | ||||
|  | ||||
|   cd ~/src/dockcross | ||||
|   docker run --rm dockcross/linux-armv7 > ./dockcross-linux-armv7 | ||||
|   chmod +x ./dockcross-linux-armv7 | ||||
|   ./dockcross-linux-armv7 bash -c '$CC test/C/hello.c -o hello_arm' | ||||
|  | ||||
| Note how invoking any toolchain command (make, gcc, etc.) is just a matter of prepending the **dockcross** script on the commandline:: | ||||
|  | ||||
|   ./dockcross-linux-armv7 [command] [args...] | ||||
|  | ||||
| The dockcross script will execute the given command-line inside the container, | ||||
| along with all arguments passed after the command. Commands that evaluate | ||||
| environmental variables in the image, like `$CC` above, should be executed in | ||||
| `bash -c`. The present working directory is mounted within the image, which | ||||
| can be used to make source code available in the Docker container. | ||||
|  | ||||
| Cross compilers | ||||
| --------------- | ||||
| @@ -40,6 +96,13 @@ dockcross/android-arm | ||||
|   architecture. | ||||
|  | ||||
|  | ||||
| .. |android-arm64-images| image:: https://images.microbadger.com/badges/image/dockcross/android-arm64.svg | ||||
|   :target: https://microbadger.com/images/dockcross/android-arm64 | ||||
|  | ||||
| dockcross/android-arm64 | ||||
|   |android-arm64-images| The Android NDK standalone toolchain for the arm64 | ||||
|   architecture. | ||||
|  | ||||
| .. |browser-asmjs-images| image:: https://images.microbadger.com/badges/image/dockcross/browser-asmjs.svg | ||||
|   :target: https://microbadger.com/images/dockcross/browser-asmjs | ||||
|  | ||||
| @@ -148,44 +211,13 @@ dockcross/windows-x86 | ||||
|   |windows-x86-images| 32-bit Windows cross-compiler based on MXE/MinGW-w64. | ||||
|  | ||||
|  | ||||
| Installation | ||||
| ------------ | ||||
| Articles | ||||
| -------- | ||||
|  | ||||
| This image does not need to be run manually. Instead, there is a helper script | ||||
| to execute build commands on source code existing on the local host filesystem. This | ||||
| script is bundled with the image. | ||||
|  | ||||
| To install the helper script, run one of the images with no arguments, and | ||||
| redirect the output to a file:: | ||||
|  | ||||
|   docker run --rm CROSS_COMPILER_IMAGE_NAME > ./dockcross | ||||
|   chmod +x ./dockcross | ||||
|   mv ./dockcross ~/bin/ | ||||
|  | ||||
| Where `CROSS_COMPILER_IMAGE_NAME` is the name of the cross-compiler toolchain | ||||
| Docker instance, e.g. `dockcross/linux-armv7`. | ||||
|  | ||||
| Only 64-bit images are provided; a 64-bit host system is required. | ||||
|  | ||||
| Usage | ||||
| ----- | ||||
|  | ||||
| For the impatient, here's how to compile a hello world for armv7:: | ||||
|  | ||||
|   cd ~/src/dockcross | ||||
|   docker run --rm dockcross/linux-armv7 > ./dockcross-linux-armv7 | ||||
|   chmod +x ./dockcross-linux-armv7 | ||||
|   ./dockcross-linux-armv7 bash -c '$CC test/C/hello.c -o hello_arm' | ||||
|  | ||||
| Note how invoking any toolchain command (make, gcc, etc.) is just a matter of prepending the **dockcross** script on the commandline:: | ||||
|  | ||||
|   ./dockcross-linux-armv7 [command] [args...] | ||||
|  | ||||
| The dockcross script will execute the given command-line inside the container, | ||||
| along with all arguments passed after the command. Commands that evaluate | ||||
| environmental variables in the image, like `$CC` above, should be executed in | ||||
| `bash -c`. The present working directory is mounted within the image, which | ||||
| can be used to make source code available in the Docker container. | ||||
| - `dockcross: C++ Write Once, Run Anywhere | ||||
|   <https://nbviewer.jupyter.org/format/slides/github/dockcross/cxx-write-once-run-anywhere/blob/master/dockcross_CXX_Write_Once_Run_Anywhere.ipynb#/>`_ | ||||
| - `Cross-compiling binaries for multiple architectures with Docker | ||||
|   <https://web.archive.org/web/20170912153531/http://blogs.nopcode.org/brainstorm/2016/07/26/cross-compiling-with-docker>`_ | ||||
|  | ||||
|  | ||||
| Built-in update commands | ||||
| @@ -269,23 +301,6 @@ For example, commands like ``git config --global advice.detachedHead false`` can | ||||
| be added to this script. | ||||
|  | ||||
|  | ||||
| Examples | ||||
| -------- | ||||
|  | ||||
| 1. ``dockcross make``: Build the *Makefile* in the current directory. | ||||
| 2. ``dockcross cmake -Bbuild -H. -GNinja``: Run CMake with a build directory | ||||
|    ``./build`` for a *CMakeLists.txt* file in the current directory and generate | ||||
|    ``ninja`` build configuration files. | ||||
| 3. ``dockcross ninja -Cbuild``: Run ninja in the ``./build`` directory. | ||||
| 4. ``dockcross bash -c '$CC test/C/hello.c -o hello'``: Build the *hello.c* file | ||||
|    with the compiler identified with the ``CC`` environmental variable in the | ||||
|    build environment. | ||||
| 5. ``dockcross bash``: Run an interactive shell in the build environment. | ||||
|  | ||||
| Note that commands are executed verbatim. If any shell processing for | ||||
| environment variable expansion or redirection is required, please use | ||||
| `bash -c 'command args...'`. | ||||
|  | ||||
| How to extend Dockcross images | ||||
| ------------------------------ | ||||
| In order to extend Dockcross images with your own commands, one must: | ||||
| @@ -308,13 +323,13 @@ And then in the shell:: | ||||
|   ./linux-armv7 bash							# Runs the helper script with the argument "bash", which starts an interactive container using your extended image. | ||||
|  | ||||
|  | ||||
| Articles | ||||
| -------- | ||||
| What is the difference between `dockcross` and `dockbuild` ? | ||||
| ------------------------------------------------------------ | ||||
|  | ||||
| - `dockcross: C++ Write Once, Run Anywhere | ||||
|   <https://nbviewer.jupyter.org/format/slides/github/dockcross/cxx-write-once-run-anywhere/blob/master/dockcross_CXX_Write_Once_Run_Anywhere.ipynb#/>`_ | ||||
| - `Cross-compiling binaries for multiple architectures with Docker | ||||
|   <http://blogs.nopcode.org/brainstorm/2016/07/26/cross-compiling-with-docker>`_ | ||||
| The key difference is that `dockbuild <https://github.com/dockbuild/dockbuild#readme>`_ | ||||
| images use the same method to conveniently isolate the build environment as | ||||
| `dockcross <https://github.com/dockcross/dockcross#readme>`_ but they do **NOT** provide | ||||
| a toolchain file. | ||||
|  | ||||
|  | ||||
| --- | ||||
|   | ||||
| @@ -11,12 +11,13 @@ ENV CROSS_TRIPLE=arm-linux-androideabi | ||||
| ENV CROSS_ROOT=/usr/${CROSS_TRIPLE} | ||||
| ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ | ||||
|     AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \ | ||||
|     CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \ | ||||
|     CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-clang \ | ||||
|     CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \ | ||||
|     CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \ | ||||
|     CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-clang++ \ | ||||
|     LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld | ||||
|  | ||||
| ENV ANDROID_NDK_REVISION 13b | ||||
| ENV ANDROID_NDK_REVISION 16b | ||||
| ENV ANDROID_NDK_API 16 | ||||
| RUN mkdir -p /build && \ | ||||
|     cd /build && \ | ||||
|     curl -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip && \ | ||||
| @@ -24,7 +25,8 @@ RUN mkdir -p /build && \ | ||||
|     cd android-ndk-r${ANDROID_NDK_REVISION} && \ | ||||
|     ./build/tools/make_standalone_toolchain.py \ | ||||
|       --arch arm \ | ||||
|       --api 16 \ | ||||
|       --api ${ANDROID_NDK_API} \ | ||||
|       --stl=libc++ \ | ||||
|       --install-dir=${CROSS_ROOT} && \ | ||||
|     cd / && \ | ||||
|     rm -rf /build && \ | ||||
|   | ||||
| @@ -6,8 +6,8 @@ set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /usr/${cross_triple}/) | ||||
| set(CMAKE_ANDROID_ARM_MODE 1) | ||||
| set(CMAKE_ANDROID_ARM_NEON 1) | ||||
|  | ||||
| set(CMAKE_C_COMPILER /usr/${cross_triple}/bin/${cross_triple}-gcc) | ||||
| set(CMAKE_CXX_COMPILER /usr/${cross_triple}/bin/${cross_triple}-g++) | ||||
| set(CMAKE_C_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang) | ||||
| set(CMAKE_CXX_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang++) | ||||
|  | ||||
| set(CMAKE_FIND_ROOT_PATH /usr/${cross_triple}) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | ||||
|   | ||||
							
								
								
									
										52
									
								
								android-arm64/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								android-arm64/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| FROM dockcross/base:latest | ||||
| MAINTAINER Matt McCormick "matt.mccormick@kitware.com" | ||||
| RUN dpkg --add-architecture arm64 ; apt-get update | ||||
|  | ||||
| # The cross-compiling emulator | ||||
| RUN apt-get update && apt-get install -y \ | ||||
|   qemu-user \ | ||||
|   qemu-user-static \ | ||||
|   unzip | ||||
|  | ||||
| ENV CROSS_TRIPLE=aarch64-linux-android | ||||
| ENV CROSS_ROOT=/usr/${CROSS_TRIPLE} | ||||
| ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ | ||||
|     AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \ | ||||
|     CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-clang \ | ||||
|     CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \ | ||||
|     CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-clang++ \ | ||||
|     LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld | ||||
|  | ||||
| ENV ANDROID_NDK_REVISION 16b | ||||
| ENV ANDROID_NDK_API 21 | ||||
| RUN mkdir -p /build && \ | ||||
|     cd /build && \ | ||||
|     curl -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip && \ | ||||
|     unzip ./android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip && \ | ||||
|     cd android-ndk-r${ANDROID_NDK_REVISION} && \ | ||||
|     ./build/tools/make_standalone_toolchain.py \ | ||||
|       --arch arm64 \ | ||||
|       --api ${ANDROID_NDK_API} \ | ||||
|       --stl=libc++ \ | ||||
|       --install-dir=${CROSS_ROOT} && \ | ||||
|     cd / && \ | ||||
|     rm -rf /build && \ | ||||
|     find ${CROSS_ROOT} -exec chmod a+r '{}' \; && \ | ||||
|     find ${CROSS_ROOT} -executable -exec chmod a+x '{}' \; | ||||
|  | ||||
|  | ||||
| ENV DEFAULT_DOCKCROSS_IMAGE dockcross/android-arm64 | ||||
|  | ||||
| COPY Toolchain.cmake ${CROSS_ROOT}/ | ||||
| ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake | ||||
|  | ||||
| # Build-time metadata as defined at http://label-schema.org | ||||
| ARG BUILD_DATE | ||||
| ARG IMAGE | ||||
| ARG VCS_REF | ||||
| ARG VCS_URL | ||||
| LABEL org.label-schema.build-date=$BUILD_DATE \ | ||||
|       org.label-schema.name=$IMAGE \ | ||||
|       org.label-schema.vcs-ref=$VCS_REF \ | ||||
|       org.label-schema.vcs-url=$VCS_URL \ | ||||
|       org.label-schema.schema-version="1.0" | ||||
							
								
								
									
										19
									
								
								android-arm64/Toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								android-arm64/Toolchain.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| set(CMAKE_SYSTEM_NAME Android) | ||||
| set(CMAKE_SYSTEM_VERSION 1) | ||||
|  | ||||
| set(cross_triple aarch64-linux-android) | ||||
| set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /usr/${cross_triple}/) | ||||
| set(CMAKE_ANDROID_ARM_MODE 1) | ||||
| set(CMAKE_ANDROID_ARM_NEON 1) | ||||
|  | ||||
| set(CMAKE_C_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang) | ||||
| set(CMAKE_CXX_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang++) | ||||
|  | ||||
| set(CMAKE_FIND_ROOT_PATH /usr/${cross_triple}) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | ||||
| set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | ||||
| set(CMAKE_SYSROOT /usr/${cross_triple}/sysroot) | ||||
|  | ||||
| set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-arm) | ||||
|  | ||||
| @@ -1,4 +1,4 @@ | ||||
| FROM trzeci/emscripten-slim:sdk-tag-1.37.29-64bit | ||||
| FROM trzeci/emscripten-slim:sdk-tag-1.37.37-64bit | ||||
| MAINTAINER Matt McCormick "matt.mccormick@kitware.com" | ||||
|  | ||||
| # Revert back to "/bin/sh" as default shell | ||||
| @@ -9,7 +9,7 @@ RUN rm /bin/sh && ln -s /bin/dash /bin/sh | ||||
|  | ||||
| #include "common.docker" | ||||
|  | ||||
| ENV EMSCRIPTEN_VERSION 1.37.29 | ||||
| ENV EMSCRIPTEN_VERSION 1.37.37 | ||||
|  | ||||
| ENV PATH /emsdk_portable:/emsdk_portable/llvm/clang/bin/:/emsdk_portable/sdk/:${PATH} | ||||
| ENV CC=/emsdk_portable/sdk/emcc \ | ||||
|   | ||||
| @@ -13,7 +13,7 @@ RUN apt-get update --yes && apt-get install --no-install-recommends --yes \ | ||||
|   ca-certificates \ | ||||
|   curl \ | ||||
|   file \ | ||||
|   git \ | ||||
|   gettext \ | ||||
|   gzip \ | ||||
|   zip \ | ||||
|   make \ | ||||
| @@ -31,15 +31,16 @@ RUN apt-get update --yes && apt-get install --no-install-recommends --yes \ | ||||
|   pax \ | ||||
|   vim \ | ||||
|   wget \ | ||||
|   xz-utils && \ | ||||
|   xz-utils \ | ||||
|   zlib1g-dev && \ | ||||
|   apt-get clean --yes | ||||
|  | ||||
| ENV GOSU_VERSION 1.10 | ||||
| RUN set -x \ | ||||
|         && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ | ||||
|         && apt-get update && rm -rf /var/lib/apt/lists/* \ | ||||
|         && dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \ | ||||
|         && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \ | ||||
|         && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \ | ||||
|         && curl -# -o /usr/local/bin/gosu -LO "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \ | ||||
|         && curl -# -o /usr/local/bin/gosu.asc -LO "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \ | ||||
|         && export GNUPGHOME="$(mktemp -d)" \ | ||||
|         && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ | ||||
|         && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ | ||||
|   | ||||
| @@ -1,21 +1,38 @@ | ||||
| WORKDIR /usr/share | ||||
| RUN git clone "https://github.com/nojhan/liquidprompt.git" && \ | ||||
|   cd liquidprompt && \ | ||||
|   git checkout v_1.11 | ||||
| COPY imagefiles/.bashrc /root/ | ||||
|  | ||||
| WORKDIR /usr/src | ||||
|  | ||||
| COPY imagefiles/install-openssl.sh imagefiles/install-cmake.sh /dockcross/ | ||||
| ARG GIT_VERSION=2.16.2 | ||||
| ARG CMAKE_VERSION=3.11.0 | ||||
|  | ||||
| COPY imagefiles/build-and-install-git.sh \ | ||||
|   imagefiles/utils.sh \ | ||||
|   imagefiles/build-and-install-openssl.sh \ | ||||
|   imagefiles/build-and-install-openssh.sh \ | ||||
|   imagefiles/build-and-install-cmake.sh \ | ||||
|   imagefiles/install-cmake-binary.sh \ | ||||
|   imagefiles/build-and-install-curl.sh \ | ||||
|   /dockcross/ | ||||
|  | ||||
| RUN \ | ||||
|   if [ "$DEFAULT_DOCKCROSS_IMAGE" = "dockcross/manylinux-x86" ]; then \ | ||||
|     /dockcross/install-openssl.sh -32 && \ | ||||
|     /dockcross/install-cmake.sh -32 || exit 1; \ | ||||
|     /dockcross/build-and-install-openssl.sh -32 && \ | ||||
|     /dockcross/build-and-install-openssh.sh && \ | ||||
|     /dockcross/build-and-install-curl.sh && \ | ||||
|     /dockcross/build-and-install-git.sh && \ | ||||
|     /dockcross/build-and-install-cmake.sh -32 || exit 1; \ | ||||
|   else \ | ||||
|     /dockcross/install-openssl.sh && \ | ||||
|     /dockcross/install-cmake.sh || exit 1; \ | ||||
|     /dockcross/build-and-install-openssl.sh && \ | ||||
|     /dockcross/build-and-install-openssh.sh && \ | ||||
|     /dockcross/build-and-install-curl.sh && \ | ||||
|     /dockcross/build-and-install-git.sh && \ | ||||
|     /dockcross/install-cmake-binary.sh || exit 1; \ | ||||
|   fi; \ | ||||
|   rm /dockcross/install-openssl.sh /dockcross/install-cmake.sh | ||||
|   rm /dockcross/build-and-install-git.sh \ | ||||
|   /dockcross/utils.sh \ | ||||
|   /dockcross/build-and-install-openssl.sh \ | ||||
|   /dockcross/build-and-install-openssh.sh \ | ||||
|   /dockcross/build-and-install-cmake.sh \ | ||||
|   /dockcross/install-cmake-binary.sh \ | ||||
|   /dockcross/build-and-install-curl.sh | ||||
|  | ||||
| COPY imagefiles/cmake.sh /usr/local/bin/cmake | ||||
| COPY imagefiles/ccmake.sh /usr/local/bin/ccmake | ||||
| @@ -31,13 +48,19 @@ RUN \ | ||||
| RUN if [ -e /opt/python/cp35-cp35m/bin/python ]; then \ | ||||
|     : nothing to do here since it is updated by manylinux-common/install-python-packages.sh ; \ | ||||
|   else \ | ||||
|     wget https://bootstrap.pypa.io/get-pip.py && \ | ||||
|     curl -# -LO https://bootstrap.pypa.io/get-pip.py && \ | ||||
|     python get-pip.py --ignore-installed && \ | ||||
|     rm get-pip.py || exit 1; \ | ||||
|   fi | ||||
|  | ||||
| RUN $([ -e /opt/python/cp35-cp35m/bin/python ] && echo "/opt/python/cp35-cp35m/bin/python" || echo "python") -m pip install --ignore-installed conan | ||||
|  | ||||
| WORKDIR /usr/share | ||||
| RUN git clone "https://github.com/nojhan/liquidprompt.git" && \ | ||||
|   cd liquidprompt && \ | ||||
|   git checkout v_1.11 | ||||
| COPY imagefiles/.bashrc /root/ | ||||
|  | ||||
| RUN echo "root:root" | chpasswd | ||||
| WORKDIR /work | ||||
| ENTRYPOINT ["/dockcross/entrypoint.sh"] | ||||
|   | ||||
| @@ -1,10 +1,11 @@ | ||||
| ENV GOSU_VERSION 1.10 | ||||
| RUN set -x \ | ||||
| 	&& yum -y install epel-release \ | ||||
| 	&& yum -y install wget gpg \ | ||||
| 	&& yum -y install gpg \ | ||||
| 	&& yum -y install zlib-devel gettext \ | ||||
| 	&& dpkgArch=$(if test $(uname -m) = "x86_64"; then echo amd64; else echo i386; fi) \ | ||||
| 	&& wget -O /usr/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \ | ||||
| 	&& wget -O /tmp/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \ | ||||
| 	&& curl -o /usr/bin/gosu -LO "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \ | ||||
| 	&& curl -o /tmp/gosu.asc -LO "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \ | ||||
| 	&& export GNUPGHOME="$(mktemp -d)" \ | ||||
| 	&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ | ||||
| 	&& gpg --batch --verify /tmp/gosu.asc /usr/bin/gosu \ | ||||
|   | ||||
| @@ -1,17 +1,4 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| # | ||||
| # Configure, build and install CMake | ||||
| # | ||||
| # Usage: | ||||
| # | ||||
| #  install-cmake.sh [-32] | ||||
| # | ||||
| # Options: | ||||
| # | ||||
| #  -32                 Build CMake as a 32-bit executable | ||||
| # | ||||
| # Notes: | ||||
| # | ||||
| #  * build directory is /usr/src/CMake | ||||
| # | ||||
| @@ -19,20 +6,14 @@ | ||||
| # | ||||
| #  * after installation, archive, source and build directories are removed | ||||
| # | ||||
| 
 | ||||
| set -e | ||||
| set -o pipefail | ||||
| set -ex | ||||
| 
 | ||||
| WRAPPER="" | ||||
| CONFIG_FLAG="" | ||||
| SUFFIX=64 | ||||
| 
 | ||||
| while [ $# -gt 0 ]; do | ||||
|   case "$1" in | ||||
|     -32) | ||||
|       WRAPPER="linux32" | ||||
|       CONFIG_FLAG="-m32" | ||||
|       SUFFIX=32 | ||||
|       ;; | ||||
|     *) | ||||
|       echo "Usage: Usage: ${0##*/} [-32]" | ||||
| @@ -42,27 +23,43 @@ while [ $# -gt 0 ]; do | ||||
|   shift | ||||
| done | ||||
| 
 | ||||
| if ! command -v git &> /dev/null; then | ||||
| 	echo >&2 'error: "git" not found!' | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| if [[ "${CMAKE_VERSION}" == "" ]]; then | ||||
|   echo >&2 'error: CMAKE_VERSION env. variable must be set to a non-empty value' | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| cd /usr/src | ||||
| 
 | ||||
| # Download | ||||
| CMAKE_REV=v3.10.1 | ||||
| wget --progress=bar:force https://github.com/kitware/cmake/archive/$CMAKE_REV.tar.gz -O CMake.tar.gz | ||||
| mkdir CMake | ||||
| tar -xzvf ./CMake.tar.gz --strip-components=1 -C ./CMake | ||||
| git clone git://cmake.org/cmake.git CMake | ||||
| 
 | ||||
| (cd CMake && git checkout v$CMAKE_VERSION) | ||||
| 
 | ||||
| mkdir /usr/src/CMake-build | ||||
| cd /usr/src/CMake-build | ||||
| 
 | ||||
| pushd /usr/src/CMake-build | ||||
| 
 | ||||
| NUM_PROCESSOR=$(grep -c processor /proc/cpuinfo) | ||||
| 
 | ||||
| # Configure boostrap | ||||
| ${WRAPPER} /usr/src/CMake/bootstrap \ | ||||
|   --parallel=$NUM_PROCESSOR \ | ||||
|   --prefix=/usr | ||||
|   --parallel=$(grep -c processor /proc/cpuinfo) | ||||
| ${WRAPPER} make -j$(grep -c processor /proc/cpuinfo) | ||||
| 
 | ||||
| # Build and Install | ||||
| ${WRAPPER} make install -j$NUM_PROCESSOR | ||||
| mkdir /usr/src/CMake-ssl-build | ||||
| cd /usr/src/CMake-ssl-build | ||||
| ${WRAPPER} /usr/src/CMake-build/bin/cmake \ | ||||
|   -DCMAKE_BUILD_TYPE:STRING=Release \ | ||||
|   -DBUILD_TESTING:BOOL=ON \ | ||||
|   -DCMAKE_INSTALL_PREFIX:PATH=/usr/src/cmake-$CMAKE_VERSION \ | ||||
|   -DCMAKE_USE_OPENSSL:BOOL=ON \ | ||||
|   -DOPENSSL_ROOT_DIR:PATH=/usr/local/ssl \ | ||||
|   ../CMake | ||||
| ${WRAPPER} make -j$(grep -c processor /proc/cpuinfo) install | ||||
| 
 | ||||
| cd /usr/src/cmake-$CMAKE_VERSION | ||||
| rm -rf doc man | ||||
| find . -type f -exec install -D "{}" "/usr/{}" \; | ||||
| 
 | ||||
| # Test | ||||
| ctest -R CMake.FileDownload | ||||
| @@ -88,8 +85,5 @@ EOF | ||||
| 
 | ||||
| # Execute test script | ||||
| cmake -P cmake-test-https-download.cmake | ||||
| rm cmake-test-https-download.cmake | ||||
| 
 | ||||
| popd | ||||
| 
 | ||||
| rm -rf CMake* | ||||
| rm -rf /usr/src/CMake* | ||||
							
								
								
									
										49
									
								
								imagefiles/build-and-install-curl.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										49
									
								
								imagefiles/build-and-install-curl.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| MY_DIR=$(dirname "${BASH_SOURCE[0]}") | ||||
| source $MY_DIR/utils.sh | ||||
|  | ||||
| # | ||||
| # Function 'do_curl_build' and 'build_curl' | ||||
| # copied from https://github.com/pypa/manylinux/tree/master/docker/build_scripts | ||||
| # | ||||
|  | ||||
| CURL_ROOT=curl_7.52.1 | ||||
| CURL_HASH=a8984e8b20880b621f61a62d95ff3c0763a3152093a9f9ce4287cfd614add6ae | ||||
|  | ||||
| # We had to switch to a debian mirror because we can't use TLS until we | ||||
| # bootstrap it with this curl + openssl | ||||
| CURL_DOWNLOAD_URL=http://deb.debian.org/debian/pool/main/c/curl | ||||
|  | ||||
| function do_curl_build { | ||||
|     # We do this shared to avoid obnoxious linker issues where git couldn't | ||||
|     # link properly. If anyone wants to make this build statically go for it. | ||||
|     LIBS=-ldl CFLAGS=-Wl,--exclude-libs,ALL ./configure --with-ssl --disable-static > /dev/null | ||||
|     make > /dev/null | ||||
|     make install > /dev/null | ||||
| } | ||||
|  | ||||
|  | ||||
| function build_curl { | ||||
|     local curl_fname=$1 | ||||
|     check_var ${curl_fname} | ||||
|     local curl_sha256=$2 | ||||
|     check_var ${curl_sha256} | ||||
|     check_var ${CURL_DOWNLOAD_URL} | ||||
|     # Can't use curl here because we don't have it yet...we are building it. | ||||
|     wget -q ${CURL_DOWNLOAD_URL}/${curl_fname}.orig.tar.gz | ||||
|     check_sha256sum ${curl_fname}.orig.tar.gz ${curl_sha256} | ||||
|     tar -zxf ${curl_fname}.orig.tar.gz | ||||
|     (cd curl-* && do_curl_build) | ||||
|     rm -rf curl_* | ||||
| } | ||||
|  | ||||
| cd /usr/src | ||||
| build_curl $CURL_ROOT $CURL_HASH | ||||
|  | ||||
| (cat /etc/ld.so.conf.d/usr-local.conf 2> /dev/null | grep -q "^/usr/local/lib$") || | ||||
|   echo '/usr/local/lib' >> /etc/ld.so.conf.d/usr-local.conf | ||||
| ldconfig | ||||
|  | ||||
							
								
								
									
										44
									
								
								imagefiles/build-and-install-git.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								imagefiles/build-and-install-git.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| if ! command -v curl &> /dev/null; then | ||||
| 	echo >&2 'error: "curl" not found!' | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| if ! command -v tar &> /dev/null; then | ||||
| 	echo >&2 'error: "tar" not found!' | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| if [[ "${GIT_VERSION}" == "" ]]; then | ||||
|   echo >&2 'error: GIT_VERSION env. variable must be set to a non-empty value' | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| (cat /etc/ld.so.conf.d/usr-local.conf 2> /dev/null | grep -q "^/usr/local/lib$") || | ||||
|   echo '/usr/local/lib' >> /etc/ld.so.conf.d/usr-local.conf | ||||
| ldconfig | ||||
|  | ||||
| cd /usr/src | ||||
|  | ||||
| url="https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz" | ||||
| echo "Downloading $url" | ||||
| curl -# -LO $url | ||||
|  | ||||
| tar xvzf git-${GIT_VERSION}.tar.gz | ||||
| rm -f git-${GIT_VERSION}.tar.gz | ||||
|  | ||||
| pushd git-${GIT_VERSION} | ||||
| ./configure --prefix=/usr/local --with-curl | ||||
| make | ||||
| make install | ||||
| popd | ||||
|  | ||||
| ldconfig | ||||
|  | ||||
| rm -rf git-${GIT_VERSION} | ||||
|  | ||||
| # turn the detached message off | ||||
| git config --global advice.detachedHead false | ||||
							
								
								
									
										22
									
								
								imagefiles/build-and-install-openssh.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										22
									
								
								imagefiles/build-and-install-openssh.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| OPENSSH_ROOT=V_7_6_P1 | ||||
|  | ||||
| cd /usr/src | ||||
| curl -LO https://github.com/openssh/openssh-portable/archive/${OPENSSH_ROOT}.tar.gz | ||||
| tar -xvf ${OPENSSH_ROOT}.tar.gz | ||||
| rm -f ${OPENSSH_ROOT}.tar.gz | ||||
|  | ||||
| OPENSSH_SRC_DIR=openssh-portable-${OPENSSH_ROOT} | ||||
| cd ${OPENSSH_SRC_DIR} | ||||
|  | ||||
| autoreconf | ||||
|  | ||||
| ./configure --prefix=/usr/local | ||||
|  | ||||
| make -j1 install | ||||
|  | ||||
| cd /usr/src | ||||
| rm -rf ${OPENSSH_SRC_DIR} | ||||
							
								
								
									
										81
									
								
								imagefiles/build-and-install-openssl.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										81
									
								
								imagefiles/build-and-install-openssl.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # Configure, build and install OpenSSL | ||||
| # | ||||
| # Usage: | ||||
| # | ||||
| #  build-and-install-openssl.sh [-32] | ||||
| # | ||||
| # Options: | ||||
| # | ||||
| #  -32              Build OpenSSL as a 32-bit library | ||||
| # | ||||
| # Notes: | ||||
| # | ||||
| #  * build directory is /usr/src/openssl-$OPENSSL_VERSION | ||||
| # | ||||
| #  * install directory is /usr | ||||
| # | ||||
| #  * after installation, build directory and archive are removed | ||||
| # | ||||
|  | ||||
| set -ex | ||||
| set -o pipefail | ||||
|  | ||||
| WRAPPER="" | ||||
| CONFIG_FLAG="-fPIC" | ||||
|  | ||||
| while [ $# -gt 0 ]; do | ||||
|   case "$1" in | ||||
|     -32) | ||||
|       WRAPPER="linux32" | ||||
|       CONFIG_FLAG="-m32" | ||||
|       ;; | ||||
|     *) | ||||
|       echo "Usage: Usage: ${0##*/} [-32]" | ||||
|       exit 1 | ||||
|       ;; | ||||
|   esac | ||||
|   shift | ||||
| done | ||||
|  | ||||
| MY_DIR=$(dirname "${BASH_SOURCE[0]}") | ||||
| source $MY_DIR/utils.sh | ||||
|  | ||||
| # | ||||
| # Function 'do_openssl_build' and 'build_openssl' | ||||
| # copied from https://github.com/pypa/manylinux/tree/master/docker/build_scripts | ||||
| # | ||||
|  | ||||
| OPENSSL_ROOT=openssl-1.0.2o | ||||
| # Hash from https://www.openssl.org/source/openssl-1.0.2o.tar.gz.sha256 | ||||
| # Matches hash at https://github.com/Homebrew/homebrew-core/blob/1766321103d9780f6e38d3ac7681b8fa42cdca86/Formula/openssl.rb#L11 | ||||
| OPENSSL_HASH=ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d | ||||
|  | ||||
| # XXX: the official https server at www.openssl.org cannot be reached | ||||
| # with the old versions of openssl and curl in Centos 5.11 hence the fallback | ||||
| # to the ftp mirror: | ||||
| OPENSSL_DOWNLOAD_URL=ftp://ftp.openssl.org/source | ||||
|  | ||||
| function do_openssl_build { | ||||
|     ${WRAPPER} ./config no-ssl2 no-shared -fPIC $CONFIG_FLAG --prefix=/usr/local/ssl > /dev/null | ||||
|     ${WRAPPER} make > /dev/null | ||||
|     ${WRAPPER} make install_sw > /dev/null | ||||
| } | ||||
|  | ||||
| function build_openssl { | ||||
|     local openssl_fname=$1 | ||||
|     check_var ${openssl_fname} | ||||
|     local openssl_sha256=$2 | ||||
|     check_var ${openssl_sha256} | ||||
|     check_var ${OPENSSL_DOWNLOAD_URL} | ||||
|     # Can't use curl here because we don't have it yet | ||||
|     curl -# -LO ${OPENSSL_DOWNLOAD_URL}/${openssl_fname}.tar.gz | ||||
|     check_sha256sum ${openssl_fname}.tar.gz ${openssl_sha256} | ||||
|     tar -xzf ${openssl_fname}.tar.gz | ||||
|     (cd ${openssl_fname} && do_openssl_build) | ||||
|     rm -rf ${openssl_fname} ${openssl_fname}.tar.gz /usr/ssl/man | ||||
| } | ||||
|  | ||||
| cd /usr/src | ||||
| build_openssl $OPENSSL_ROOT $OPENSSL_HASH | ||||
| @@ -9,7 +9,9 @@ if [[ $# == 0 ]]; then | ||||
|     if [[ -n $DEFAULT_DOCKCROSS_IMAGE ]]; then | ||||
|         head -n 2 /dockcross/dockcross | ||||
|         echo "DEFAULT_DOCKCROSS_IMAGE=$DEFAULT_DOCKCROSS_IMAGE" | ||||
|         tail -n +4 /dockcross/dockcross | ||||
|         tail -n +4 /dockcross/dockcross | | ||||
|           sed -e "s@dockcross\/linux\-armv7@${DEFAULT_DOCKCROSS_IMAGE}@g" | | ||||
|           sed -e "s@dockcross\-linux\-armv7@${DEFAULT_DOCKCROSS_IMAGE//[\/:]/-}@g" | ||||
|     else | ||||
|         cat /dockcross/dockcross | ||||
|     fi | ||||
|   | ||||
							
								
								
									
										35
									
								
								imagefiles/install-cmake-binary.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								imagefiles/install-cmake-binary.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| if ! command -v curl &> /dev/null; then | ||||
| 	echo >&2 'error: "curl" not found!' | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| if ! command -v tar &> /dev/null; then | ||||
| 	echo >&2 'error: "tar" not found!' | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| if [[ "${CMAKE_VERSION}" == "" ]]; then | ||||
|   echo >&2 'error: CMAKE_VERSION env. variable must be set to a non-empty value' | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| cd /tmp | ||||
|  | ||||
| filename=cmake-${CMAKE_VERSION}-Centos5-x86_64 | ||||
| url=https://github.com/dockbuild/CMake/releases/download/v${CMAKE_VERSION}/${filename}.tar.gz | ||||
| echo "Downloading $url" | ||||
| curl -# -LO $url | ||||
|  | ||||
| tar -xzvf ${filename}.tar.gz | ||||
| rm -f ${filename}.tar.gz | ||||
|  | ||||
| cd ${filename} | ||||
|  | ||||
| rm -rf doc man | ||||
| rm -rf bin/cmake-gui | ||||
|  | ||||
| find . -type f -exec install -D "{}" "/usr/{}" \; | ||||
| @@ -58,7 +58,7 @@ cd "${CTNG}" | ||||
|  | ||||
| # Download and install the "crosstool-ng" source. | ||||
| REV=1.23.0 | ||||
| wget --progress=bar:force \ | ||||
| curl -# -LO \ | ||||
|   "https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-${REV}.tar.gz" | ||||
| tar -xf "crosstool-ng-${REV}.tar.gz" | ||||
| cd "crosstool-ng-crosstool-ng-${REV}" | ||||
|   | ||||
| @@ -27,7 +27,7 @@ done | ||||
|  | ||||
| # Download | ||||
| REV=v1.7.2 | ||||
| wget --progress=bar:force https://github.com/ninja-build/ninja/archive/$REV.tar.gz -O ninja.tar.gz | ||||
| curl -# -o ninja.tar.gz -LO https://github.com/ninja-build/ninja/archive/$REV.tar.gz | ||||
| mkdir ninja | ||||
| tar -xzvf ./ninja.tar.gz --strip-components=1 -C ./ninja | ||||
|  | ||||
|   | ||||
| @@ -1,83 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # | ||||
| # Configure, build and install OpenSSL | ||||
| # | ||||
| # Usage: | ||||
| # | ||||
| #  install-openssl.sh [-32] | ||||
| # | ||||
| # Options: | ||||
| # | ||||
| #  -32              Build OpenSSL as a 32-bit library | ||||
| # | ||||
| # Notes: | ||||
| # | ||||
| #  * build directory is /usr/src/openssl-$OPENSSL_VERSION | ||||
| # | ||||
| #  * install directory is /usr | ||||
| # | ||||
| #  * after installation, build directory and archive are removed | ||||
| # | ||||
|  | ||||
| set -e | ||||
| set -o pipefail | ||||
|  | ||||
| WRAPPER="" | ||||
| CONFIG_FLAG="-fPIC" | ||||
| SUFFIX=64 | ||||
|  | ||||
| while [ $# -gt 0 ]; do | ||||
|   case "$1" in | ||||
|     -32) | ||||
|       WRAPPER="linux32" | ||||
|       CONFIG_FLAG="-m32" | ||||
|       SUFFIX=32 | ||||
|       ;; | ||||
|     *) | ||||
|       echo "Usage: Usage: ${0##*/} [-32]" | ||||
|       exit 1 | ||||
|       ;; | ||||
|   esac | ||||
|   shift | ||||
| done | ||||
|  | ||||
| OPENSSL_VERSION=1.0.2j | ||||
| OPENSSL_SHA256=e7aff292be21c259c6af26469c7a9b3ba26e9abaaffd325e3dccc9785256c431 | ||||
|  | ||||
| cd /usr/src | ||||
|  | ||||
| # Download | ||||
| if [ ! -f ./openssl-$OPENSSL_VERSION.tar.gz ]; then | ||||
|   wget --progress=bar:force https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz | ||||
| else | ||||
|   rm -rf ./openssl-$OPENSSL_VERSION | ||||
| fi | ||||
|  | ||||
| # Verify | ||||
| sha256_openssl=`sha256sum ./openssl-$OPENSSL_VERSION.tar.gz | awk '{ print $1 }'` | ||||
| if [ "$sha256_openssl" != "$OPENSSL_SHA256" ] | ||||
| then | ||||
|   echo "SHA256 mismatch. Problem downloading OpenSSL." | ||||
|   echo "  current [$sha256_openssl]" | ||||
|   echo "  expected[$OPENSSL_SHA256]" | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| # Extract | ||||
| tar -xzvf openssl-$OPENSSL_VERSION.tar.gz | ||||
|  | ||||
| pushd openssl-$OPENSSL_VERSION | ||||
|  | ||||
| # Configure | ||||
| ${WRAPPER} ./config --prefix=/usr $CONFIG_FLAG | ||||
|  | ||||
| # Build & Install | ||||
| ${WRAPPER} make install | ||||
|  | ||||
| popd | ||||
|  | ||||
| # Clean | ||||
| rm -rf ./openssl-$OPENSSL_VERSION* | ||||
| rm -rf /usr/ssl/man | ||||
|  | ||||
							
								
								
									
										24
									
								
								imagefiles/utils.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								imagefiles/utils.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
|  | ||||
| # Copied from https://github.com/pypa/manylinux/blob/master/docker/build_scripts/build_utils.sh | ||||
| function check_var { | ||||
|     if [ -z "$1" ]; then | ||||
|         echo "required variable not defined" | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| # Copied from https://github.com/pypa/manylinux/blob/master/docker/build_scripts/build_utils.sh | ||||
| function check_sha256sum { | ||||
|     local fname=$1 | ||||
|     check_var ${fname} | ||||
|     local sha256=$2 | ||||
|     check_var ${sha256} | ||||
|  | ||||
|     echo "${sha256}  ${fname}" > ${fname}.sha256 | ||||
|     sha256sum -c ${fname}.sha256 | ||||
|     rm -f ${fname}.sha256 | ||||
| } | ||||
|  | ||||
| @@ -34,11 +34,6 @@ ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ | ||||
|     CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ | ||||
|  | ||||
|  | ||||
| COPY imagefiles/install-openssl.sh /dockcross/ | ||||
| RUN \ | ||||
|   /dockcross/install-openssl.sh -32 && \ | ||||
|   rm /dockcross/install-openssl.sh | ||||
|  | ||||
| ENV DEFAULT_DOCKCROSS_IMAGE dockcross/linux-x86 | ||||
|  | ||||
| # Note: Toolchain file support is currently in debian Experimental: | ||||
|   | ||||
| @@ -3,10 +3,10 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com" | ||||
|  | ||||
| ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x64 | ||||
|  | ||||
| #include "common.docker" | ||||
|  | ||||
| #include "common.manylinux" | ||||
|  | ||||
| #include "common.docker" | ||||
|  | ||||
| ENV CROSS_TRIPLE x86_64-linux-gnu | ||||
| ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin | ||||
| ENV AS=${CROSS_ROOT}/as \ | ||||
|   | ||||
| @@ -3,10 +3,10 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com" | ||||
|  | ||||
| ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x86 | ||||
|  | ||||
| #include "common.docker" | ||||
|  | ||||
| #include "common.manylinux" | ||||
|  | ||||
| #include "common.docker" | ||||
|  | ||||
| ENV CROSS_TRIPLE i686-linux-gnu | ||||
| ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin | ||||
| ENV AS=${CROSS_ROOT}/as \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Nadav
					Nadav