mirror of
https://github.com/bensuperpc/dockcross.git
synced 2024-11-10 05:07:26 +01:00
commit
e2c5545bf6
@ -44,6 +44,25 @@ jobs:
|
|||||||
- save_cache:
|
- save_cache:
|
||||||
key: android-arm-assets-{{ .Revision }}
|
key: android-arm-assets-{{ .Revision }}
|
||||||
paths: ~/docker/android-arm.tar
|
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:
|
browser-asmjs:
|
||||||
<<: *build-settings
|
<<: *build-settings
|
||||||
steps:
|
steps:
|
||||||
@ -68,17 +87,18 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: base-assets-{{ .Revision }}
|
key: base-assets-{{ .Revision }}
|
||||||
- run:
|
# Image build currently broken. See #209
|
||||||
name: linux-arm64 build
|
#- run:
|
||||||
no_output_timeout: 1.5h
|
#name: linux-arm64 build
|
||||||
command: |
|
#no_output_timeout: 1.5h
|
||||||
docker load -i ~/docker/base.tar
|
#command: |
|
||||||
make linux-arm64
|
#docker load -i ~/docker/base.tar
|
||||||
docker save -o ~/docker/linux-arm64.tar dockcross/linux-arm64:latest
|
#make linux-arm64
|
||||||
- run:
|
#docker save -o ~/docker/linux-arm64.tar dockcross/linux-arm64:latest
|
||||||
name: linux-arm64 test
|
#- run:
|
||||||
command: |
|
#name: linux-arm64 test
|
||||||
make linux-arm64.test
|
#command: |
|
||||||
|
#make linux-arm64.test
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: linux-arm64-assets-{{ .Revision }}
|
key: linux-arm64-assets-{{ .Revision }}
|
||||||
paths: ~/docker/linux-arm64.tar
|
paths: ~/docker/linux-arm64.tar
|
||||||
@ -87,17 +107,18 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: base-assets-{{ .Revision }}
|
key: base-assets-{{ .Revision }}
|
||||||
- run:
|
# Image build currently broken. See #209
|
||||||
name: linux-armv5 build
|
#- run:
|
||||||
no_output_timeout: 1.5h
|
#name: linux-armv5 build
|
||||||
command: |
|
#no_output_timeout: 1.5h
|
||||||
docker load -i ~/docker/base.tar
|
#command: |
|
||||||
make linux-armv5
|
#docker load -i ~/docker/base.tar
|
||||||
docker save -o ~/docker/linux-armv5.tar dockcross/linux-armv5:latest
|
#make linux-armv5
|
||||||
- run:
|
#docker save -o ~/docker/linux-armv5.tar dockcross/linux-armv5:latest
|
||||||
name: linux-armv5 test
|
#- run:
|
||||||
command: |
|
#name: linux-armv5 test
|
||||||
make linux-armv5.test
|
#command: |
|
||||||
|
#make linux-armv5.test
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: linux-armv5-assets-{{ .Revision }}
|
key: linux-armv5-assets-{{ .Revision }}
|
||||||
paths: ~/docker/linux-armv5.tar
|
paths: ~/docker/linux-armv5.tar
|
||||||
@ -125,17 +146,18 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: base-assets-{{ .Revision }}
|
key: base-assets-{{ .Revision }}
|
||||||
- run:
|
# Image build currently broken. See #209
|
||||||
name: linux-armv7 build
|
#- run:
|
||||||
no_output_timeout: 1.5h
|
#name: linux-armv7 build
|
||||||
command: |
|
#no_output_timeout: 1.5h
|
||||||
docker load -i ~/docker/base.tar
|
#command: |
|
||||||
make linux-armv7
|
#docker load -i ~/docker/base.tar
|
||||||
docker save -o ~/docker/linux-armv7.tar dockcross/linux-armv7:latest
|
#make linux-armv7
|
||||||
- run:
|
#docker save -o ~/docker/linux-armv7.tar dockcross/linux-armv7:latest
|
||||||
name: linux-armv7 test
|
#- run:
|
||||||
command: |
|
#name: linux-armv7 test
|
||||||
make linux-armv7.test
|
#command: |
|
||||||
|
#make linux-armv7.test
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: linux-armv7-assets-{{ .Revision }}
|
key: linux-armv7-assets-{{ .Revision }}
|
||||||
paths: ~/docker/linux-armv7.tar
|
paths: ~/docker/linux-armv7.tar
|
||||||
@ -144,17 +166,18 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: base-assets-{{ .Revision }}
|
key: base-assets-{{ .Revision }}
|
||||||
- run:
|
# Image build currently broken. See #209
|
||||||
name: linux-mipsel build
|
#- run:
|
||||||
no_output_timeout: 1.5h
|
#name: linux-mipsel build
|
||||||
command: |
|
#no_output_timeout: 1.5h
|
||||||
docker load -i ~/docker/base.tar
|
#command: |
|
||||||
make linux-mipsel
|
#docker load -i ~/docker/base.tar
|
||||||
docker save -o ~/docker/linux-mipsel.tar dockcross/linux-mipsel:latest
|
#make linux-mipsel
|
||||||
- run:
|
#docker save -o ~/docker/linux-mipsel.tar dockcross/linux-mipsel:latest
|
||||||
name: linux-mipsel test
|
#- run:
|
||||||
command: |
|
#name: linux-mipsel test
|
||||||
make linux-mipsel.test
|
#command: |
|
||||||
|
#make linux-mipsel.test
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: linux-mipsel-assets-{{ .Revision }}
|
key: linux-mipsel-assets-{{ .Revision }}
|
||||||
paths: ~/docker/linux-mipsel.tar
|
paths: ~/docker/linux-mipsel.tar
|
||||||
@ -182,17 +205,18 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: base-assets-{{ .Revision }}
|
key: base-assets-{{ .Revision }}
|
||||||
- run:
|
# Image build currently broken. See #209
|
||||||
name: linux-ppc64le build
|
#- run:
|
||||||
no_output_timeout: 1.5h
|
#name: linux-ppc64le build
|
||||||
command: |
|
#no_output_timeout: 1.5h
|
||||||
docker load -i ~/docker/base.tar
|
#command: |
|
||||||
make linux-ppc64le
|
#docker load -i ~/docker/base.tar
|
||||||
docker save -o ~/docker/linux-ppc64le.tar dockcross/linux-ppc64le:latest
|
#make linux-ppc64le
|
||||||
- run:
|
#docker save -o ~/docker/linux-ppc64le.tar dockcross/linux-ppc64le:latest
|
||||||
name: linux-ppc64le test
|
#- run:
|
||||||
command: |
|
#name: linux-ppc64le test
|
||||||
make linux-ppc64le.test
|
#command: |
|
||||||
|
#make linux-ppc64le.test
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: linux-ppc64le-assets-{{ .Revision }}
|
key: linux-ppc64le-assets-{{ .Revision }}
|
||||||
paths: ~/docker/linux-ppc64le.tar
|
paths: ~/docker/linux-ppc64le.tar
|
||||||
@ -333,6 +357,16 @@ jobs:
|
|||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
docker push dockcross/android-arm:latest
|
docker push dockcross/android-arm:latest
|
||||||
fi
|
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:
|
- restore_cache:
|
||||||
key: browser-asmjs-assets-{{ .Revision }}
|
key: browser-asmjs-assets-{{ .Revision }}
|
||||||
- deploy:
|
- deploy:
|
||||||
@ -343,26 +377,28 @@ jobs:
|
|||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
docker push dockcross/browser-asmjs:latest
|
docker push dockcross/browser-asmjs:latest
|
||||||
fi
|
fi
|
||||||
- restore_cache:
|
# Image build currently broken. See #209
|
||||||
key: linux-arm64-assets-{{ .Revision }}
|
#- restore_cache:
|
||||||
- deploy:
|
#key: linux-arm64-assets-{{ .Revision }}
|
||||||
name: Deploy linux-arm64
|
#- deploy:
|
||||||
command: |
|
#name: Deploy linux-arm64
|
||||||
docker load -i ~/docker/linux-arm64.tar
|
#command: |
|
||||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
#docker load -i ~/docker/linux-arm64.tar
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
#if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||||
docker push dockcross/linux-arm64:latest
|
#docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
fi
|
#docker push dockcross/linux-arm64:latest
|
||||||
- restore_cache:
|
#fi
|
||||||
key: linux-armv5-assets-{{ .Revision }}
|
# Image build currently broken. See #209
|
||||||
- deploy:
|
#- restore_cache:
|
||||||
name: Deploy linux-armv5
|
#key: linux-armv5-assets-{{ .Revision }}
|
||||||
command: |
|
#- deploy:
|
||||||
docker load -i ~/docker/linux-armv5.tar
|
#name: Deploy linux-armv5
|
||||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
#command: |
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
#docker load -i ~/docker/linux-armv5.tar
|
||||||
docker push dockcross/linux-armv5:latest
|
#if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||||
fi
|
#docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
|
#docker push dockcross/linux-armv5:latest
|
||||||
|
#fi
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: linux-armv6-assets-{{ .Revision }}
|
key: linux-armv6-assets-{{ .Revision }}
|
||||||
- deploy:
|
- deploy:
|
||||||
@ -373,26 +409,28 @@ jobs:
|
|||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
docker push dockcross/linux-armv6:latest
|
docker push dockcross/linux-armv6:latest
|
||||||
fi
|
fi
|
||||||
- restore_cache:
|
# Image build currently broken. See #209
|
||||||
key: linux-armv7-assets-{{ .Revision }}
|
#- restore_cache:
|
||||||
- deploy:
|
#key: linux-armv7-assets-{{ .Revision }}
|
||||||
name: Deploy linux-armv7
|
#- deploy:
|
||||||
command: |
|
#name: Deploy linux-armv7
|
||||||
docker load -i ~/docker/linux-armv7.tar
|
#command: |
|
||||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
#docker load -i ~/docker/linux-armv7.tar
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
#if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||||
docker push dockcross/linux-armv7:latest
|
#docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
fi
|
#docker push dockcross/linux-armv7:latest
|
||||||
- restore_cache:
|
#fi
|
||||||
key: linux-mipsel-assets-{{ .Revision }}
|
# Image build currently broken. See #209
|
||||||
- deploy:
|
#- restore_cache:
|
||||||
name: Deploy linux-mipsel
|
#key: linux-mipsel-assets-{{ .Revision }}
|
||||||
command: |
|
#- deploy:
|
||||||
docker load -i ~/docker/linux-mipsel.tar
|
#name: Deploy linux-mipsel
|
||||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
#command: |
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
#docker load -i ~/docker/linux-mipsel.tar
|
||||||
docker push dockcross/linux-mipsel:latest
|
#if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||||
fi
|
#docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
|
#docker push dockcross/linux-mipsel:latest
|
||||||
|
#fi
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: linux-s390x-assets-{{ .Revision }}
|
key: linux-s390x-assets-{{ .Revision }}
|
||||||
- deploy:
|
- deploy:
|
||||||
@ -403,16 +441,17 @@ jobs:
|
|||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
docker push dockcross/linux-s390x:latest
|
docker push dockcross/linux-s390x:latest
|
||||||
fi
|
fi
|
||||||
- restore_cache:
|
# Image build currently broken. See #209
|
||||||
key: linux-ppc64le-assets-{{ .Revision }}
|
#- restore_cache:
|
||||||
- deploy:
|
#key: linux-ppc64le-assets-{{ .Revision }}
|
||||||
name: Deploy linux-ppc64le
|
#- deploy:
|
||||||
command: |
|
#name: Deploy linux-ppc64le
|
||||||
docker load -i ~/docker/linux-ppc64le.tar
|
#command: |
|
||||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
#docker load -i ~/docker/linux-ppc64le.tar
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
#if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||||
docker push dockcross/linux-ppc64le:latest
|
#docker login -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
fi
|
#docker push dockcross/linux-ppc64le:latest
|
||||||
|
#fi
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: linux-x64-assets-{{ .Revision }}
|
key: linux-x64-assets-{{ .Revision }}
|
||||||
- deploy:
|
- deploy:
|
||||||
@ -482,30 +521,38 @@ workflows:
|
|||||||
- android-arm:
|
- android-arm:
|
||||||
requires:
|
requires:
|
||||||
- base
|
- base
|
||||||
|
- android-arm64:
|
||||||
|
requires:
|
||||||
|
- base
|
||||||
- browser-asmjs:
|
- browser-asmjs:
|
||||||
requires:
|
requires:
|
||||||
- base
|
- base
|
||||||
- linux-arm64:
|
# Image build currently broken. See #209
|
||||||
requires:
|
#- linux-arm64:
|
||||||
- base
|
#requires:
|
||||||
- linux-armv5:
|
#- base
|
||||||
requires:
|
# Image build currently broken. See #209
|
||||||
- base
|
#- linux-armv5:
|
||||||
|
#requires:
|
||||||
|
#- base
|
||||||
- linux-armv6:
|
- linux-armv6:
|
||||||
requires:
|
requires:
|
||||||
- base
|
- base
|
||||||
- linux-armv7:
|
# Image build currently broken. See #209
|
||||||
requires:
|
#- linux-armv7:
|
||||||
- base
|
#requires:
|
||||||
- linux-mipsel:
|
#- base
|
||||||
requires:
|
# Image build currently broken. See #209
|
||||||
- base
|
#- linux-mipsel:
|
||||||
|
#requires:
|
||||||
|
#- base
|
||||||
- linux-s390x:
|
- linux-s390x:
|
||||||
requires:
|
requires:
|
||||||
- base
|
- base
|
||||||
- linux-ppc64le:
|
# Image build currently broken. See #209
|
||||||
requires:
|
#- linux-ppc64le:
|
||||||
- base
|
#requires:
|
||||||
|
#- base
|
||||||
- linux-x64:
|
- linux-x64:
|
||||||
requires:
|
requires:
|
||||||
- base
|
- base
|
||||||
@ -528,14 +575,18 @@ workflows:
|
|||||||
requires:
|
requires:
|
||||||
- base
|
- base
|
||||||
- android-arm
|
- android-arm
|
||||||
|
- android-arm64
|
||||||
- browser-asmjs
|
- browser-asmjs
|
||||||
- linux-arm64
|
# Image build currently broken. See #209
|
||||||
- linux-armv5
|
#- linux-arm64
|
||||||
|
#- linux-armv5
|
||||||
- linux-armv6
|
- linux-armv6
|
||||||
- linux-armv7
|
# Image build currently broken. See #209
|
||||||
- linux-mipsel
|
#- linux-armv7
|
||||||
|
#- linux-mipsel
|
||||||
- linux-s390x
|
- linux-s390x
|
||||||
- linux-ppc64le
|
# Image build currently broken. See #209
|
||||||
|
#- linux-ppc64le
|
||||||
- linux-x64
|
- linux-x64
|
||||||
- linux-x86
|
- linux-x86
|
||||||
- manylinux-x64
|
- 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
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
2
Makefile
2
Makefile
@ -13,7 +13,7 @@ ORG = dockcross
|
|||||||
BIN = ./bin
|
BIN = ./bin
|
||||||
|
|
||||||
# These images are built using the "build implicit rule"
|
# 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.
|
# Generated Dockerfiles.
|
||||||
GEN_IMAGES = linux-s390x linux-mips manylinux-x86 manylinux-x64 browser-asmjs
|
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.
|
* Pre-built and configured toolchains for cross compiling.
|
||||||
* Most images also contain an emulator for the target system.
|
* 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).
|
* 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.
|
* 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.
|
* Recent `CMake <https://cmake.org>`_ and ninja are precompiled.
|
||||||
@ -20,6 +21,61 @@ Features
|
|||||||
* Current directory is mounted as the container's workdir, ``/work``.
|
* 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/>`_.
|
* 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
|
Cross compilers
|
||||||
---------------
|
---------------
|
||||||
@ -40,6 +96,13 @@ dockcross/android-arm
|
|||||||
architecture.
|
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
|
.. |browser-asmjs-images| image:: https://images.microbadger.com/badges/image/dockcross/browser-asmjs.svg
|
||||||
:target: https://microbadger.com/images/dockcross/browser-asmjs
|
: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.
|
|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
|
- `dockcross: C++ Write Once, Run Anywhere
|
||||||
to execute build commands on source code existing on the local host filesystem. This
|
<https://nbviewer.jupyter.org/format/slides/github/dockcross/cxx-write-once-run-anywhere/blob/master/dockcross_CXX_Write_Once_Run_Anywhere.ipynb#/>`_
|
||||||
script is bundled with the image.
|
- `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>`_
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
Built-in update commands
|
Built-in update commands
|
||||||
@ -269,23 +301,6 @@ For example, commands like ``git config --global advice.detachedHead false`` can
|
|||||||
be added to this script.
|
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
|
How to extend Dockcross images
|
||||||
------------------------------
|
------------------------------
|
||||||
In order to extend Dockcross images with your own commands, one must:
|
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.
|
./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
|
The key difference is that `dockbuild <https://github.com/dockbuild/dockbuild#readme>`_
|
||||||
<https://nbviewer.jupyter.org/format/slides/github/dockcross/cxx-write-once-run-anywhere/blob/master/dockcross_CXX_Write_Once_Run_Anywhere.ipynb#/>`_
|
images use the same method to conveniently isolate the build environment as
|
||||||
- `Cross-compiling binaries for multiple architectures with Docker
|
`dockcross <https://github.com/dockcross/dockcross#readme>`_ but they do **NOT** provide
|
||||||
<http://blogs.nopcode.org/brainstorm/2016/07/26/cross-compiling-with-docker>`_
|
a toolchain file.
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -11,12 +11,13 @@ ENV CROSS_TRIPLE=arm-linux-androideabi
|
|||||||
ENV CROSS_ROOT=/usr/${CROSS_TRIPLE}
|
ENV CROSS_ROOT=/usr/${CROSS_TRIPLE}
|
||||||
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
|
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
|
||||||
AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \
|
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 \
|
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
|
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 && \
|
RUN mkdir -p /build && \
|
||||||
cd /build && \
|
cd /build && \
|
||||||
curl -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip && \
|
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} && \
|
cd android-ndk-r${ANDROID_NDK_REVISION} && \
|
||||||
./build/tools/make_standalone_toolchain.py \
|
./build/tools/make_standalone_toolchain.py \
|
||||||
--arch arm \
|
--arch arm \
|
||||||
--api 16 \
|
--api ${ANDROID_NDK_API} \
|
||||||
|
--stl=libc++ \
|
||||||
--install-dir=${CROSS_ROOT} && \
|
--install-dir=${CROSS_ROOT} && \
|
||||||
cd / && \
|
cd / && \
|
||||||
rm -rf /build && \
|
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_MODE 1)
|
||||||
set(CMAKE_ANDROID_ARM_NEON 1)
|
set(CMAKE_ANDROID_ARM_NEON 1)
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER /usr/${cross_triple}/bin/${cross_triple}-gcc)
|
set(CMAKE_C_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang)
|
||||||
set(CMAKE_CXX_COMPILER /usr/${cross_triple}/bin/${cross_triple}-g++)
|
set(CMAKE_CXX_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang++)
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/${cross_triple})
|
set(CMAKE_FIND_ROOT_PATH /usr/${cross_triple})
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
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"
|
MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
||||||
|
|
||||||
# Revert back to "/bin/sh" as default shell
|
# 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"
|
#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 PATH /emsdk_portable:/emsdk_portable/llvm/clang/bin/:/emsdk_portable/sdk/:${PATH}
|
||||||
ENV CC=/emsdk_portable/sdk/emcc \
|
ENV CC=/emsdk_portable/sdk/emcc \
|
||||||
|
@ -13,7 +13,7 @@ RUN apt-get update --yes && apt-get install --no-install-recommends --yes \
|
|||||||
ca-certificates \
|
ca-certificates \
|
||||||
curl \
|
curl \
|
||||||
file \
|
file \
|
||||||
git \
|
gettext \
|
||||||
gzip \
|
gzip \
|
||||||
zip \
|
zip \
|
||||||
make \
|
make \
|
||||||
@ -31,15 +31,16 @@ RUN apt-get update --yes && apt-get install --no-install-recommends --yes \
|
|||||||
pax \
|
pax \
|
||||||
vim \
|
vim \
|
||||||
wget \
|
wget \
|
||||||
xz-utils && \
|
xz-utils \
|
||||||
|
zlib1g-dev && \
|
||||||
apt-get clean --yes
|
apt-get clean --yes
|
||||||
|
|
||||||
ENV GOSU_VERSION 1.10
|
ENV GOSU_VERSION 1.10
|
||||||
RUN set -x \
|
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 }')" \
|
&& 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" \
|
&& curl -# -o /usr/local/bin/gosu -LO "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.asc -LO "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \
|
||||||
&& export GNUPGHOME="$(mktemp -d)" \
|
&& export GNUPGHOME="$(mktemp -d)" \
|
||||||
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
|
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
|
||||||
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
|
&& 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
|
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 \
|
RUN \
|
||||||
if [ "$DEFAULT_DOCKCROSS_IMAGE" = "dockcross/manylinux-x86" ]; then \
|
if [ "$DEFAULT_DOCKCROSS_IMAGE" = "dockcross/manylinux-x86" ]; then \
|
||||||
/dockcross/install-openssl.sh -32 && \
|
/dockcross/build-and-install-openssl.sh -32 && \
|
||||||
/dockcross/install-cmake.sh -32 || exit 1; \
|
/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 \
|
else \
|
||||||
/dockcross/install-openssl.sh && \
|
/dockcross/build-and-install-openssl.sh && \
|
||||||
/dockcross/install-cmake.sh || exit 1; \
|
/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; \
|
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/cmake.sh /usr/local/bin/cmake
|
||||||
COPY imagefiles/ccmake.sh /usr/local/bin/ccmake
|
COPY imagefiles/ccmake.sh /usr/local/bin/ccmake
|
||||||
@ -31,13 +48,19 @@ RUN \
|
|||||||
RUN if [ -e /opt/python/cp35-cp35m/bin/python ]; then \
|
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 ; \
|
: nothing to do here since it is updated by manylinux-common/install-python-packages.sh ; \
|
||||||
else \
|
else \
|
||||||
wget https://bootstrap.pypa.io/get-pip.py && \
|
curl -# -LO https://bootstrap.pypa.io/get-pip.py && \
|
||||||
python get-pip.py --ignore-installed && \
|
python get-pip.py --ignore-installed && \
|
||||||
rm get-pip.py || exit 1; \
|
rm get-pip.py || exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RUN $([ -e /opt/python/cp35-cp35m/bin/python ] && echo "/opt/python/cp35-cp35m/bin/python" || echo "python") -m pip install --ignore-installed conan
|
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
|
RUN echo "root:root" | chpasswd
|
||||||
WORKDIR /work
|
WORKDIR /work
|
||||||
ENTRYPOINT ["/dockcross/entrypoint.sh"]
|
ENTRYPOINT ["/dockcross/entrypoint.sh"]
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
ENV GOSU_VERSION 1.10
|
ENV GOSU_VERSION 1.10
|
||||||
RUN set -x \
|
RUN set -x \
|
||||||
&& yum -y install epel-release \
|
&& 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) \
|
&& 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" \
|
&& curl -o /usr/bin/gosu -LO "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 /tmp/gosu.asc -LO "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \
|
||||||
&& export GNUPGHOME="$(mktemp -d)" \
|
&& export GNUPGHOME="$(mktemp -d)" \
|
||||||
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
|
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
|
||||||
&& gpg --batch --verify /tmp/gosu.asc /usr/bin/gosu \
|
&& gpg --batch --verify /tmp/gosu.asc /usr/bin/gosu \
|
||||||
|
@ -1,17 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/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
|
# * build directory is /usr/src/CMake
|
||||||
#
|
#
|
||||||
@ -19,20 +6,14 @@
|
|||||||
#
|
#
|
||||||
# * after installation, archive, source and build directories are removed
|
# * after installation, archive, source and build directories are removed
|
||||||
#
|
#
|
||||||
|
set -ex
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
WRAPPER=""
|
WRAPPER=""
|
||||||
CONFIG_FLAG=""
|
|
||||||
SUFFIX=64
|
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-32)
|
-32)
|
||||||
WRAPPER="linux32"
|
WRAPPER="linux32"
|
||||||
CONFIG_FLAG="-m32"
|
|
||||||
SUFFIX=32
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: Usage: ${0##*/} [-32]"
|
echo "Usage: Usage: ${0##*/} [-32]"
|
||||||
@ -42,27 +23,43 @@ while [ $# -gt 0 ]; do
|
|||||||
shift
|
shift
|
||||||
done
|
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
|
cd /usr/src
|
||||||
|
|
||||||
# Download
|
git clone git://cmake.org/cmake.git CMake
|
||||||
CMAKE_REV=v3.10.1
|
|
||||||
wget --progress=bar:force https://github.com/kitware/cmake/archive/$CMAKE_REV.tar.gz -O CMake.tar.gz
|
(cd CMake && git checkout v$CMAKE_VERSION)
|
||||||
mkdir CMake
|
|
||||||
tar -xzvf ./CMake.tar.gz --strip-components=1 -C ./CMake
|
|
||||||
|
|
||||||
mkdir /usr/src/CMake-build
|
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 \
|
${WRAPPER} /usr/src/CMake/bootstrap \
|
||||||
--parallel=$NUM_PROCESSOR \
|
--parallel=$(grep -c processor /proc/cpuinfo)
|
||||||
--prefix=/usr
|
${WRAPPER} make -j$(grep -c processor /proc/cpuinfo)
|
||||||
|
|
||||||
# Build and Install
|
mkdir /usr/src/CMake-ssl-build
|
||||||
${WRAPPER} make install -j$NUM_PROCESSOR
|
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
|
# Test
|
||||||
ctest -R CMake.FileDownload
|
ctest -R CMake.FileDownload
|
||||||
@ -88,8 +85,5 @@ EOF
|
|||||||
|
|
||||||
# Execute test script
|
# Execute test script
|
||||||
cmake -P cmake-test-https-download.cmake
|
cmake -P cmake-test-https-download.cmake
|
||||||
rm cmake-test-https-download.cmake
|
|
||||||
|
|
||||||
popd
|
rm -rf /usr/src/CMake*
|
||||||
|
|
||||||
rm -rf 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
|
if [[ -n $DEFAULT_DOCKCROSS_IMAGE ]]; then
|
||||||
head -n 2 /dockcross/dockcross
|
head -n 2 /dockcross/dockcross
|
||||||
echo "DEFAULT_DOCKCROSS_IMAGE=$DEFAULT_DOCKCROSS_IMAGE"
|
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
|
else
|
||||||
cat /dockcross/dockcross
|
cat /dockcross/dockcross
|
||||||
fi
|
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.
|
# Download and install the "crosstool-ng" source.
|
||||||
REV=1.23.0
|
REV=1.23.0
|
||||||
wget --progress=bar:force \
|
curl -# -LO \
|
||||||
"https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-${REV}.tar.gz"
|
"https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-${REV}.tar.gz"
|
||||||
tar -xf "crosstool-ng-${REV}.tar.gz"
|
tar -xf "crosstool-ng-${REV}.tar.gz"
|
||||||
cd "crosstool-ng-crosstool-ng-${REV}"
|
cd "crosstool-ng-crosstool-ng-${REV}"
|
||||||
|
@ -27,7 +27,7 @@ done
|
|||||||
|
|
||||||
# Download
|
# Download
|
||||||
REV=v1.7.2
|
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
|
mkdir ninja
|
||||||
tar -xzvf ./ninja.tar.gz --strip-components=1 -C ./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++
|
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
|
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/linux-x86
|
||||||
|
|
||||||
# Note: Toolchain file support is currently in debian Experimental:
|
# 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
|
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x64
|
||||||
|
|
||||||
#include "common.docker"
|
|
||||||
|
|
||||||
#include "common.manylinux"
|
#include "common.manylinux"
|
||||||
|
|
||||||
|
#include "common.docker"
|
||||||
|
|
||||||
ENV CROSS_TRIPLE x86_64-linux-gnu
|
ENV CROSS_TRIPLE x86_64-linux-gnu
|
||||||
ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin
|
ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin
|
||||||
ENV AS=${CROSS_ROOT}/as \
|
ENV AS=${CROSS_ROOT}/as \
|
||||||
|
@ -3,10 +3,10 @@ MAINTAINER Matt McCormick "matt.mccormick@kitware.com"
|
|||||||
|
|
||||||
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x86
|
ENV DEFAULT_DOCKCROSS_IMAGE dockcross/manylinux-x86
|
||||||
|
|
||||||
#include "common.docker"
|
|
||||||
|
|
||||||
#include "common.manylinux"
|
#include "common.manylinux"
|
||||||
|
|
||||||
|
#include "common.docker"
|
||||||
|
|
||||||
ENV CROSS_TRIPLE i686-linux-gnu
|
ENV CROSS_TRIPLE i686-linux-gnu
|
||||||
ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin
|
ENV CROSS_ROOT /opt/rh/devtoolset-2/root/usr/bin
|
||||||
ENV AS=${CROSS_ROOT}/as \
|
ENV AS=${CROSS_ROOT}/as \
|
||||||
|
Loading…
Reference in New Issue
Block a user