Commit Graph

130 Commits

Author SHA1 Message Date
Jean-Christophe Fillion-Robin
f31e582f80
dockcross: Simplify container name generation using $RANDOM
This commit removes the complex pipeline leveraging output from
/dev/urandom and simply uses $RANDOM variable. For the purpose
of generating an available container name, it will works well.

Suggested-by: Matt McCormick <matt.mccormick@kitware.com>
2016-10-30 23:46:01 -04:00
Jean-Christophe Fillion-Robin
bd234af0a9
dockcross: Prevent dockcross from blocking when used with Python subprocess
As explained in [1], when using dockcross from python subprocess, the
interactive mode is disabled and output of "cat /dev/urandom" is block
buffered instead of being line buffered.

Workaround to this problem is to simply read a fixed amount of characters
from urandom.

The following two snippets illustrates the problem and the
the implemented  solution:

Works

```python
import subprocess as sp
sp.check_call("var=$(head -c 500 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9' | fold -w 7 | head -n 1); echo $var", shell=True)
```

=> output random string


Fail:

```python
import subprocess as sp
sp.check_call("var=$(cat /dev/urandom | base64 | tr -dc 'a-zA-Z0-9' | fold -w 7 | head -n 1); echo $var", shell=True)
```

=> Hang

[1] http://stackoverflow.com/questions/16805827/unable-to-read-stdout-from-a-running-process#16806506
2016-10-30 03:27:10 -04:00
Jean-Christophe Fillion-Robin
3288c877e5
dockcross: Fix "tr: Illegal byte sequence" when generating container name on MacOSx
See #50
2016-10-27 13:20:31 -04:00
Jean-Christophe Fillion-Robin
c5edcb3a74
dockcross: Ensure exit code associated with run command is always returned 2016-10-27 11:37:07 -04:00
Jean-Christophe Fillion-Robin
904cb09858
dockcross: Change name of container from "dockcross" to "dockcross_RAND"
where RAND is a 7 characters long randomly generated alphanumeric string.

Note that container name can NOT start with "_",
only [a-zA-Z0-9][a-zA-Z0-9_.-] are allowed

See #50
2016-10-27 11:37:03 -04:00
Jean-Christophe Fillion-Robin
7a8f4fab0e
dockcross: Do not output any text after container is removed
See #50
2016-10-27 11:19:37 -04:00
Jean-Christophe Fillion-Robin
2e71db2234
dockcross: Ignore deletion error when running in unprivileged LXC container
This commit workarounds the problem described in [1] and [2] by ignoring error
happening when deleting container in unprivileged LXC container.

Fixes #50

[1] https://circleci.com/docs/docker-btrfs-error/
[2] https://discuss.circleci.com/t/docker-error-removing-intermediate-container/70
2016-10-26 23:24:25 -04:00
Jean-Christophe Fillion-Robin
af75453ed0 base/dockcross: Run docker with "-ti" only if a tty or pts is attached
This commit reverts f07ca00 (base: Do not add -i -t flags to run command
by default) and ensure tty is available before specifying the flags.
2016-09-23 11:33:29 -04:00
Jean-Christophe Fillion-Robin
aa2c24cb3b base/dockcross: Run docker using -t to support CTRL-C 2016-09-22 23:34:08 -04:00
Jean-Christophe Fillion-Robin
995c9091e5 manylinux: Grant current user password less sudo access.
This will allow build script like "build-wheels.sh" to run command like
the following (see [1]):

  sudo yum install -y atlas-devel

It will also allow to pip install using sudo and avoid error reported in [3].

That said, instead of running pip using sudo, the recommended approach
is to specify the "--user" flag [2]

[1] 893d92517e/travis/build-wheels.sh

[2] http://stackoverflow.com/questions/7143077/how-can-i-install-packages-in-my-home-folder-with-pip#7143496

[3] Error reported when running pip without "sudo pip install <packagename" or "pip install --user <packagename>"
```
Exception:
Traceback (most recent call last):
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/site-packages/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/site-packages/pip/req/req_set.py", line 736, in install
    requirement.uninstall(auto_confirm=True)
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/site-packages/pip/req/req_install.py", line 742, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/site-packages/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/opt/_internal/cpython-2.7.11-ucs2/lib/python2.7/shutil.py", line 303, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/opt/_internal/cpython-2.7.11-ucs2/bin/easy_install'
```
2016-09-22 19:21:24 -04:00
Matt McCormick
131e6408ee Merge pull request #38 from jcfr/36-support-disabling-toolchain-cmake-option
36 support disabling toolchain cmake option
2016-09-22 11:23:09 -04:00
Jean-Christophe Fillion-Robin
4876f14356 base/cmake: Do not pass toolchain option when using incompatible cmake option
Also revert the changes to ccmake.sh, the restriction doesn't apply to it.

Suggested-by: Matt McCormick <matt.mccormick@kitware.com>
2016-09-21 21:11:33 -04:00
Jean-Christophe Fillion-Robin
c05d52310a dockcross: Ensure running "update commands" exits script with correct status 2016-09-21 20:25:11 -04:00
Jean-Christophe Fillion-Robin
c525ad106e cmake/ccmake: Provide a mechanism to disable passing of toolchain file
By default the toolchain file is always passed as an option to cmake/ccmake

It can be explicitly disabled setting the environment variable
DOCKCROSS_PASS_CMAKE_TOOLCHAIN_FILE to 0
2016-09-21 19:06:51 -04:00
Jean-Christophe Fillion-Robin
43e46710e6 dockcross: Add support for special update commands. Fixes #34 2016-09-21 16:31:09 -04:00
Jean-Christophe Fillion-Robin
1eac15c210 dockcross: Add warning regarding location of DEFAULT_DOCKCROSS_IMAGE 2016-09-21 16:29:00 -04:00
Matt McCormick
f07ca0043c base: Do not add -i -t flags to run command by default
Allow the dockcross script to be used in scripts where a tty is not available.
2016-08-31 22:31:58 -04:00
Matt McCormick
1ed3548655 base: Add cmake wrapper scripts for CMAKE_TOOLCHAIN_FILE
All images should define this variables.

Disable build tests on the base image because it is not configured for cross
compiling.
2016-07-22 08:48:59 -04:00
Jean-Christophe Fillion-Robin
96f3514bf2 Dockerfiles: Rename working directory from "/build" to "/work"
Since the directory will contain both sources and build, this commit
generalizes its name.
2016-07-16 01:12:58 -04:00
Matt McCormick
04c7d0de18 Rename project and repository to dockcross 2016-07-15 23:46:08 -04:00
Matt McCormick
30e29f3bbb browser-asmjs: cp ~/.emscripten, etc to the user home in the entrypoint 2016-07-06 15:33:35 -04:00
Matt McCormick
42ff489565 dockcross: Improve end of script help formatting 2016-07-05 21:50:20 -04:00
Matt McCormick
a5d5307a97 dockcross: Remove duplicate option parsing 2016-07-05 21:49:07 -04:00
Matt McCormick
8cd9083ae6 dockcross: Improve command help 2016-07-04 22:27:04 -04:00
Matt McCormick
5aa3cd3867 dockcross: Add short flags 2016-07-04 22:17:22 -04:00
Matt McCormick
3a96030b23 base: support BUILDER_USER, BUILDER_GROUP, and liquidprompt bash 2016-07-04 22:03:10 -04:00
Matt McCormick
fdb18671e3 dockcross: make the default image specific to each compiler 2016-07-04 00:10:36 -04:00
Roman Valls Guimera
9ff528dd49 Remove old README.md [ci skip] 2016-05-31 09:04:58 +02:00
Roman Valls Guimera
7e6150cf29 Tidy up and consolidate both README.rst/README.md into one. Introduce linux-armv5. 2016-05-30 22:50:22 +02:00
Sven Fischer
8e344a9537 Added functionality to ease the use of X image
Functionality borrowed from the Raspberry Pi cross compile docker build
file from https://github.com/sdt/docker-raspberry-pi-cross-compiler
2016-05-30 22:50:22 +02:00