Commit Graph
39 Commits
Author SHA1 Message Date
Jean-Christophe Fillion-Robin 79938b37e5 circle.yml: Simplify reusing 'display_images' target 2016-09-25 23:55:17 -04:00
Jean-Christophe Fillion-Robin 8a4e0845da Makefile: All images are tested. Remove ALL_IMAGES and DEFAULT_IMAGES vars.
To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after has been compared.

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current> /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "-------------------------------" && \
    echo "Here is output of:" && \
    echo "  diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current" && \
    echo "" && \
    diff --ignore-trailing-space ../dockcross-$target-baseline ../dockcross-$target-current
done
```

Output:

```
-------------------------------
Here is output of:
  diff --ignore-trailing-space ../dockcross-make-baseline ../dockcross-make-current

8a9
> docker build -t dockcross/linux-ppc64le linux-ppc64le
10a12,14
> cp -r test browser-asmjs/
> docker build -t dockcross/browser-asmjs browser-asmjs
> rm -rf browser-asmjs/test

-------------------------------
Here is output of:
  diff --ignore-trailing-space ../dockcross-make-test-baseline ../dockcross-make-test-current

24a25,27
> docker build -t dockcross/linux-ppc64le linux-ppc64le
> docker run --rm dockcross/linux-ppc64le > bin/dockcross-linux-ppc64le && chmod +x bin/dockcross-linux-ppc64le
> bin/dockcross-linux-ppc64le python test/run.py --languages C
30a34,38
> cp -r test browser-asmjs/
> docker build -t dockcross/browser-asmjs browser-asmjs
> rm -rf browser-asmjs/test
> docker run --rm dockcross/browser-asmjs > bin/dockcross-browser-asmjs && chmod +x bin/dockcross-browser-asmjs
> bin/dockcross-browser-asmjs python test/run.py --exe-suffix ".js"

```
2016-09-25 23:28:23 -04:00
Jean-Christophe Fillion-Robin 4caa5a367f README: Add "Download all images" and "+Install all dockcross scripts" section 2016-09-25 19:47:23 -04:00
Jean-Christophe Fillion-Robin aa4735ddf2 Makefile: Add "display_default_images" and "display_all_images" targets 2016-09-25 19:46:49 -04:00
Jean-Christophe Fillion-Robin 4a0c6442c2 Makefile: Introduce NON_STANDARD_IMAGES, ALL_IMAGES and DEFAULT_IMAGES vars
This commit also ensures that:
* all image targets are declared as PHONY
* "test" and not "tests" is declared as PHONY


To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared.


Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
make browser-asmjs.test --dry-run > ../dockcross-make-browser-asmjs-test-baseline
make linux-ppc64le.test --dry-run > ../dockcross-make-linux-ppc64le-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current
make browser-asmjs.test --dry-run > ../dockcross-make-browser-asmjs-test-current
make linux-ppc64le.test --dry-run > ../dockcross-make-linux-ppc64le-test-current

for target in make make-test make-browser-asmjs-test make-linux-ppc64le-test; do
  diff --ignore-trailing-space ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 19:04:07 -04:00
Jean-Christophe Fillion-Robin b033376284 Makefile: Add comments and move implicit rules at the end of the file
To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared:

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff --ignore-trailing-space ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 18:38:26 -04:00
Jean-Christophe Fillion-Robin 0710c46745 Makefile: Treat windows-(x86|x64) as regular image introducing _ARGS var
To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared.

The only difference was due to the extra space in the command line
associated with windows-x86

```
< bin/dockcross-windows-x86 python test/run.py  --exe-suffix ".exe"
---
> bin/dockcross-windows-x86 python test/run.py --exe-suffix ".exe"
```


Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff --ignore-trailing-space ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 18:20:02 -04:00
Jean-Christophe Fillion-Robin f7f6989e46 Makefile: Add implicit rule for STANDARD_TESTS
To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared:

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 18:03:28 -04:00
Jean-Christophe Fillion-Robin 53b158314a Makefile: Add implicit rule for STANDARD_IMAGES
Adding a new images with the usual build rule:

  $(DOCKER) build -t $(ORG)/$@ $@

is now just a matter of adding an item to the "STANDARD_IMAGES" list.


To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared.

Note that since this patch changes the order in which the images are
listed (manylinux is now last), the baseline and current files are
different. After inspection, we can confirm the difference is explained
by the order of the commands.

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 17:44:08 -04:00
Jean-Christophe Fillion-Robin 2a12475d36 Makefile: Remove dependencies on a non-generated files
Since image targets are all "phony", they are always consider out-of-date
and will always be rebuilt. This means there is no need to add an explicit
dependency on non-generated files like  "Dockerfile", "settings.mk" and
"test/run.py".

The only required dependencies on Dockerfile are the one for the "base"
and "manylinux" images.

To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared:

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 17:38:20 -04:00
Jean-Christophe Fillion-Robin caba0b0cef Makefile: Remove "Toolchain.cmake" dependencies
Since image targets are all "phony", they are always consider out-of-date
and will always be rebuilt. This means there is no need to add an explicit
dependency on the "Toolchain.cmake" file.

Note also that the dependency on "Toolchain.cmake" was not consistent
for all images. For example, "linux-x64" was missing the dependency
whereas it was specified for "linux-x86".

This commit ensure all image targets are consistent removing the
dependency on "Toolchain.cmake".

To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared:

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 17:38:12 -04:00
Jean-Christophe Fillion-Robin e428bb3c03 Makefile: Simplify test rule using "addsuffix" filename function
See https://www.gnu.org/software/make/manual/html_node/File-Name-Functions.html#File-Name-Functions

To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared:

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 17:38:05 -04:00
Jean-Christophe Fillion-Robin 92b57f511d Makefile: Introduce IMAGES variable
To confirm that the Makefiles works as expected after this patch, the
list of executed commands before and after is compared:

Before:

```
make --dry-run > ../dockcross-make-baseline
make test --dry-run > ../dockcross-make-test-baseline
```

After:

```
make --dry-run > ../dockcross-make-current;
make test --dry-run > ../dockcross-make-test-current

for target in make make-test; do
  diff ../dockcross-$target-current ../dockcross-$target-baseline > /dev/null 2>&1
  [[ $? == 1 ]] && \
    echo "" && \
    echo "Error: Problem with '${target}' target: Dry-run output before and after this commit do not match."
done
```
2016-09-25 17:37:08 -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] https://github.com/pypa/python-manylinux-demo/blob/893d92517e9e289b9d2ee063f19c3216a39534ab/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
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 ff2512b785 manylinux-x64: Set DOCKCROSS_PASS_CMAKE_TOOLCHAIN_FILE to 0
Fixes #36
2016-09-21 19:09:41 -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
Jean-Christophe Fillion-Robin 3c25505f52 Makefile: Add test targets
This commits add test targets for all images, this will facilitate local
testing.

In addition to the usual targets:

  make android-arm
  make browser-asmjs
  [...]

the following targets are now available:

  make tests
  make android-arm.test
  make browser-asmjs.test
  [...]

Note that the target "all" has been renamed into "images"
2016-07-16 02:45:23 -04:00
Jean-Christophe Fillion-Robin a082610bf6 circle/linux-armv7: Fix test
This commit fixes a regression introduced in e8830e9
2016-07-16 02:35:17 -04:00
Jean-Christophe Fillion-Robin f02cc5632b circle/linux-arm64: Fix path emulator
This commit fixes a regression introduced in e76eb01
2016-07-16 02:35:17 -04:00
Jean-Christophe Fillion-Robin c237fc9925 Makefile: Add "default" target
This commit adds a target named "default" at the top of the Makefile. Since
make will build the first target by default, simply typing "make" will
build all images.

See http://stackoverflow.com/questions/27242905/makefile-all-vs-default-targets/27243940#27243940

Note: Since "darwin-x64" needs some work, it has been excluded from the
default list.
2016-07-16 01:19:37 -04:00
Jean-Christophe Fillion-Robin a3b7b03058 Makefile: Fix target linux-x64
There are no linux-x64/Toolchain.cmake file
2016-07-16 01:19:37 -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
Jean-Christophe Fillion-Robin 4248ac2766 linux-x86: Update README
This commit updates the README to mention linux-x86 is a cross-compiler
associated with a Toolchain file. See f57b97b (linux-x86: Add toolchain
file and install libc6 and stdc++6 32-bit libraries)
2016-04-19 01:12:35 -04:00
Jean-Christophe Fillion-Robin 2c81b4957f linux-ppc64le: Specify system processor and fix library finding.
This commit updates the toolchain to ensure libraries associated with
ppc64le can be found.

Since the libraries are all installed on the system and not in dedicated
root, FIND_ROOT_PATH should *not* be specified.
2016-04-18 23:37:20 -04:00
Jean-Christophe Fillion-Robin f07fe2e3b9 linux-armv7: Install "common" additional packages
These packages also mirror the one already available in the base images
for x86_64.
2016-04-16 16:43:13 -04:00
Jean-Christophe Fillion-Robin bf42ff14c8 linux-x86: Install "common" additional packages
These packages also mirror the one already available in the base images
for x86_64.
2016-04-16 16:43:13 -04:00
Jean-Christophe Fillion-Robin dc871beb50 linux-x86: Set emulator path using a "noop" script without argument.
This will fix issue where emulator is used doing:

  COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} /path/to/prog arg1 arg2

Prior to this commit, it wasn't working because the following command
was used:

  /bin/sh -c /path/to/prog arg1 arg2
2016-04-16 16:43:13 -04:00
Jean-Christophe Fillion-Robin 4ccd459994 linux-x86: Avoid CMake issue by not setting CMAKE_AR. It is automatically set.
It is automatically set in CMakeFindBinUtils.cmake using the value
of _CMAKE_TOOLCHAIN_PREFIX extracted from the compiler name within
CMakeDetermineCCompiler.cmake.

The CMake issue is #15448 - https://cmake.org/Bug/view.php?id=15448
2016-04-16 16:43:13 -04:00
Jean-Christophe Fillion-Robin 44dd51cbe8 linux-armv7: Specify system processor and fix library finding.
This commit updates the toolchain to ensure libraries associated with arm
can be found. While a new root path needed to be set for armv6, the
most recent armv7 toolchain doesn't require to explicitly set a new
root.
2016-04-15 03:40:58 -04:00
Jean-Christophe Fillion-Robin aec085ce9b linux-armv6: Specify system processor and add missing find root path.
The additional find root path will ensure libraries like libm and libutils
are found.
2016-04-15 03:30:59 -04:00
Jean-Christophe Fillion-Robin 7527b8e6e3 linux-x86: Tweak toolchain comment associated with CMAKE_IGNORE_PATH 2016-04-15 03:29:07 -04:00
Jean-Christophe Fillion-Robin db0ed0a625 test_driver: Add --debug option to avoid deleting the build directory
This is particularly useful when debugging Toolchain
2016-04-13 19:54:28 -04:00
Jean-Christophe Fillion-Robin f57b97b06b linux-x86: Add toolchain file and install libc6 and stdc++6 32-bit libraries 2016-04-13 19:54:28 -04:00