Files
conan-center-index/recipes/libcurl/all/test_package/conanfile.py
BjoernAtBosch 64e1df29ac (#12568) Fix license and url of libcurl in conanfile.py
* Fix license and url of libcurl in conanfile.py

libcurl is provided under "curl" license - see https://curl.se/docs/copyright.html and https://spdx.org/licenses/curl.html
URL is https://curl.se

* Set license to MIT for versions before 7.10.4

(patch provided by uilianries)

* Update Conan tools imports

Signed-off-by: Uilian Ries <uilianries@gmail.com>

Signed-off-by: Uilian Ries <uilianries@gmail.com>
Co-authored-by: Uilian Ries <uilianries@gmail.com>
2022-09-09 13:24:10 +02:00

57 lines
2.4 KiB
Python

from conans import ConanFile, CMake
from conan.tools.build import cross_building
import os
import subprocess
import re
class TestPackageConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "cmake", "cmake_find_package"
def build_requirements(self):
if self.settings.os == "Macos" and self.settings.arch == "armv8":
# Workaround for CMake bug with error message:
# Attempting to use @rpath without CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG being
# set. This could be because you are using a Mac OS X version less than 10.5
# or because CMake's platform configuration is corrupt.
# FIXME: Remove once CMake on macOS/M1 CI runners is upgraded.
self.build_requires("cmake/3.22.0")
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
@property
def _test_executable(self):
if self.settings.os == "Windows":
return os.path.join("bin", "test_package.exe")
else:
return os.path.join("bin", "test_package")
def test(self):
if not cross_building(self):
self.run(self._test_executable, run_environment=True)
else:
# We will dump information for the generated executable
if self.settings.os in ["Android", "iOS"]:
# FIXME: Check output for these hosts
return
output = subprocess.check_output(["file", self._test_executable]).decode()
if self.settings.os == "Macos" and self.settings.arch == "armv8":
assert "Mach-O 64-bit executable arm64" in output, "Not found in output: {}".format(output)
elif self.settings.os == "Linux":
if self.settings.arch == "armv8_32":
assert re.search(r"Machine:\s+ARM", output), "Not found in output: {}".format(output)
elif "armv8" in self.settings.arch:
assert re.search(r"Machine:\s+AArch64", output), "Not found in output: {}".format(output)
elif "arm" in self.settings.arch:
assert re.search(r"Machine:\s+ARM", output), "Not found in output: {}".format(output)
elif self.settings.os == "Windows": # FIXME: It satisfies not only MinGW
assert re.search(r"PE32.*executable.*Windows", output), "Not found in output: {}".format(output)