Skip to content

Commit

Permalink
Merge branch 'release/0.26.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
lasote committed Apr 24, 2019
2 parents 102a731 + 200f827 commit 001f070
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 13 deletions.
6 changes: 3 additions & 3 deletions .ci/travis/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ if [[ "$(uname -s)" == 'Darwin' ]]; then

case "${PYVER}" in
py27)
pyenv install 2.7.10
pyenv virtualenv 2.7.10 conan
pyenv install 2.7.16
pyenv virtualenv 2.7.16 conan
;;
py37)
pyenv install 3.7.1
Expand All @@ -29,7 +29,7 @@ if [[ "$(uname -s)" == 'Darwin' ]]; then
python --version
else
sudo apt-get update
sudo apt-get install gcc-multilib g++-multilib
sudo apt-get install -y --no-install-recommends gcc-multilib g++-multilib selinux-basics
fi

pip install -r cpt/requirements.txt
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1074,6 +1074,7 @@ Using **CONAN_CLANG_VERSIONS** env variable in Travis ci or Appveyor:
- **test_folder**: Custom test folder consumed by Conan create, e.j .conan/test_package
- **conanfile**: Custom conanfile consumed by Conan create. e.j. conanfile.py
- **config_url**: Conan config URL be installed before to build e.j https://github.com/bincrafters/conan-config.git
- **force_selinux**: Force docker to relabel file objects on the shared volumes
Upload related parameters:
Expand Down Expand Up @@ -1212,6 +1213,7 @@ This is especially useful for CI integration.
- **CONAN_IGNORE_SKIP_CI**: Ignore `[skip ci]` in commit message.
- **CONAN_CONANFILE**: Custom conanfile consumed by Conan create. e.j. conanfile.py
- **CPT_TEST_FOLDER**: Custom test_package path, e.j .conan/test_package
- **CONAN_FORCE_SELINUX**: Force docker to relabel file objects on the shared volumes
# Full example
Expand Down
2 changes: 1 addition & 1 deletion cpt/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

__version__ = '0.25.1'
__version__ = '0.26.0'
NEWEST_CONAN_SUPPORTED = "1.15.0-dev"
7 changes: 5 additions & 2 deletions cpt/packager.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,8 @@ def __init__(self, username=None, channel=None, runner=None,
test_folder=None,
cwd=None,
config_url=None,
upload_dependencies=None):
upload_dependencies=None,
force_selinux=None):

self.printer = Printer(out)
self.printer.print_rule()
Expand Down Expand Up @@ -278,6 +279,7 @@ def __init__(self, username=None, channel=None, runner=None,
else:
self.docker_32_images = os.getenv("CONAN_DOCKER_32_IMAGES", False)

self.force_selinux = force_selinux or get_bool_from_env("CONAN_FORCE_SELINUX")
self.curpage = curpage or os.getenv("CONAN_CURRENT_PAGE", 1)
self.total_pages = total_pages or os.getenv("CONAN_TOTAL_PAGES", 1)

Expand Down Expand Up @@ -580,7 +582,8 @@ def run_builds(self, curpage=None, total_pages=None, base_profile_name=None):
config_url=self.config_url,
printer=self.printer,
upload_dependencies=self.upload_dependencies,
conanfile=self.conanfile)
conanfile=self.conanfile,
force_selinux=self.force_selinux)

r.run(pull_image=not pulled_docker_images[docker_image],
docker_entry_script=self.docker_entry_script)
Expand Down
2 changes: 0 additions & 2 deletions cpt/run_in_docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ def run():
# Get all from environ
conan_api, client_cache, _ = Conan.factory()
printer = Printer()
if os.path.exists(client_cache.default_profile_path):
os.remove(client_cache.default_profile_path)

remotes_manager = RemotesManager(conan_api, printer)
default_username = os.getenv("CONAN_USERNAME")
Expand Down
16 changes: 14 additions & 2 deletions cpt/runner.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import os
import sys
import subprocess
from collections import namedtuple

from conans import tools, __version__ as client_version
Expand Down Expand Up @@ -150,7 +151,8 @@ def __init__(self, profile_text, base_profile_text, base_profile_name, reference
config_url=None,
printer=None,
upload_dependencies=None,
conanfile=None):
conanfile=None,
force_selinux=None):

self.printer = printer or Printer()
self._upload = upload
Expand Down Expand Up @@ -179,6 +181,7 @@ def __init__(self, profile_text, base_profile_text, base_profile_name, reference
self._config_url = config_url
self._upload_dependencies = upload_dependencies or []
self._conanfile = conanfile
self._force_selinux = force_selinux

def _pip_update_conan_command(self):
commands = []
Expand All @@ -200,6 +203,13 @@ def _pip_update_conan_command(self):
command = " && ".join(commands)
return command

@staticmethod
def is_selinux_running():
if tools.which("getenforce"):
output = subprocess.check_output("getenforce", shell=True)
return "Enforcing" in output.decode()
return False

def run(self, pull_image=True, docker_entry_script=None):
envs = self.get_env_vars()
env_vars_text = " ".join(['-e %s="%s"' % (key, value)
Expand Down Expand Up @@ -241,12 +251,14 @@ def run(self, pull_image=True, docker_entry_script=None):
update_command = self._pip_update_conan_command() + " && "
else:
update_command = ""
volume_options = ":z" if (DockerCreateRunner.is_selinux_running() or self._force_selinux) else ""

command = ('%s docker run --rm -v "%s:%s/project" %s %s %s %s %s '
command = ('%s docker run --rm -v "%s:%s/project%s" %s %s %s %s %s '
'"%s cd project && '
'%s run_create_in_docker "' % (self._sudo_docker_command,
os.getcwd(),
self._docker_conan_home,
volume_options,
env_vars_text,
self._docker_run_options,
self._docker_platform_param,
Expand Down
4 changes: 4 additions & 0 deletions cpt/test/integration/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ def tearDown(self):
def save_conanfile(self, conanfile):
tools.save(os.path.join(self.tmp_folder, "conanfile.py"), conanfile)

def create_project(self):
with tools.chdir(self.tmp_folder):
self.api.new("hello/0.1.0", pure_c=True)

@property
def root_project_folder(self):
dir_path = os.path.dirname(os.path.realpath(__file__))
Expand Down
44 changes: 41 additions & 3 deletions cpt/test/integration/docker_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ def build(self):
"CONAN_DOCKER_IMAGE": "conanio/gcc8",
"CONAN_REFERENCE": "foo/0.0.1@bar/testing",
"CONAN_DOCKER_RUN_OPTIONS": "--network=host, --add-host=google.com:8.8.8.8 -v{}:/tmp/cpt".format(self.root_project_folder),
"CONAN_DOCKER_IMAGE_SKIP_UPDATE": "TRUE"
"CONAN_DOCKER_IMAGE_SKIP_UPDATE": "TRUE",
"CONAN_FORCE_SELINUX": "TRUE"
}):
self.packager = ConanMultiPackager(gcc_versions=["8"],
archs=["x86_64"],
Expand All @@ -140,11 +141,13 @@ def build(self):
self.packager.add({})
self.packager.run()
self.assertIn("--network=host --add-host=google.com:8.8.8.8 -v", self.output)
self.assertIn("/home/conan/project:z", self.output)

# Validate by parameter
with tools.environment_append({"CONAN_USERNAME": "bar",
"CONAN_DOCKER_IMAGE": "conanio/gcc8",
"CONAN_REFERENCE": "foo/0.0.1@bar/testing"
"CONAN_REFERENCE": "foo/0.0.1@bar/testing",

}):

self.packager = ConanMultiPackager(gcc_versions=["8"],
Expand All @@ -153,7 +156,42 @@ def build(self):
docker_run_options="--network=host -v{}:/tmp/cpt --cpus=1".format(self.root_project_folder) ,
docker_entry_script="pip install -U /tmp/cpt",
docker_image_skip_update=True,
out=self.output.write)
out=self.output.write,
force_selinux=True)
self.packager.add({})
self.packager.run()
self.assertIn("--cpus=1 conanio/gcc8", self.output)
self.assertIn("/home/conan/project:z", self.output)

@unittest.skipUnless(is_linux_and_have_docker(), "Requires Linux and Docker")
def test_docker_run_android(self):
self.create_project()
command = ('docker run --rm -v "{}:/home/conan/project" ',
'-e CONAN_RECIPE_LINTER="False" ',
'-e CONAN_PIP_PACKAGE="0" ',
'-e CONAN_DOCKER_ENTRY_SCRIPT="pip install -U /tmp/cpt" ',
'-e CONAN_USERNAME="bar" ',
'-e CONAN_DOCKER_IMAGE="conanio/android-clang8" ',
'-e CONAN_CHANNEL="testing" ',
'-e CONAN_DOCKER_RUN_OPTIONS="-v{}:/tmp/cpt" ',
'-e CONAN_DOCKER_IMAGE_SKIP_UPDATE="TRUE" ',
'-e CONAN_DOCKER_USE_SUDO="FALSE" ',
'-e CONAN_ARCHS="x86_64" ',
'-e CONAN_CLANG_VERSIONS="8" ',
'-e CONAN_BUILD_TYPES="Release" ',
'-e CONAN_LOGIN_USERNAME="bar" ',
'-e CONAN_REFERENCE="hello/0.1.0@bar/testing" ',
'-e CPT_PROFILE="@@include(default)@@@@[settings]@@arch=x86_64@@build_type=Release@@compiler=clang@@compiler.version=8@@[options]@@@@[env]@@@@[build_requires]@@@@" ',
'-e CONAN_TEMP_TEST_FOLDER="1" ',
'-e CPT_UPLOAD_RETRY="3" ',
'-e CPT_CONANFILE="conanfile.py" ',
'-v{}:/tmp/cpt ',
'conanio/android-clang8 ',
'/bin/sh -c " cd project && pip install -U /tmp/cpt && run_create_in_docker "')
command = "".join(command).format(self.tmp_folder, self.root_project_folder, self.root_project_folder)
output = subprocess.check_output(command, shell=True).decode()
self.assertIn("os=Android", output)
self.assertIn("compiler.version=8", output)
self.assertIn("compiler=clang", output)
self.assertIn("arch=x86_64", output)
self.assertIn("Cross-build from 'Linux:x86_64' to 'Android:x86_64'", output)

0 comments on commit 001f070

Please sign in to comment.