Skip to content

Commit 6b7b89c

Browse files
mbeutelAbrilRBSfranramirez688
authored
gsl-lite: Modernize recipe, add versions 0.43.0 and 1.0.1 (#27517)
* gsl-lite: Modernize recipe, add versions 0.43.0 and 1.0.1 * Refine recipe * Cleanups * Keep components and old options * Add build and clear bindirs * Keep old install behaviour * Move to new recipe * Add v0.43.0 to config.yml * Add CMake version requirement * Fix cmake version * use old test package * No higher cmake limit --------- Co-authored-by: Abril Rincón Blanco <[email protected]> Co-authored-by: Abril Rincón Blanco <[email protected]> Co-authored-by: Francisco Ramirez de Anton <[email protected]>
1 parent 1b845c0 commit 6b7b89c

File tree

11 files changed

+130
-7
lines changed

11 files changed

+130
-7
lines changed

recipes/gsl-lite/1.x/conandata.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
sources:
2+
"1.0.1":
3+
url: "https://github.com/gsl-lite/gsl-lite/archive/v1.0.1.tar.gz"
4+
sha256: "063a0b4248a2afd8154b2b5fe9d64472868a166d3963682e823f81516194af79"

recipes/gsl-lite/1.x/conanfile.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import os
2+
3+
from conan import ConanFile
4+
from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
5+
from conan.tools.files import copy, get, rmdir
6+
7+
required_conan_version = ">=2.1"
8+
9+
10+
class GslLiteConan(ConanFile):
11+
name = "gsl-lite"
12+
description = "ISO C++ Core Guidelines Library implementation for C++98, C++11 up"
13+
license = "MIT"
14+
url = "https://github.com/conan-io/conan-center-index"
15+
homepage = "https://github.com/gsl-lite/gsl-lite"
16+
topics = ("GSL", "header-only")
17+
package_type = "header-library"
18+
settings = "os", "arch", "compiler", "build_type"
19+
20+
def layout(self):
21+
cmake_layout(self, src_folder="src")
22+
23+
def package_id(self):
24+
self.info.clear()
25+
26+
def build_requirements(self):
27+
self.tool_requires("cmake/[>=3.16]")
28+
29+
def source(self):
30+
get(self, **self.conan_data["sources"][self.version], strip_root=True)
31+
32+
def generate(self):
33+
tc = CMakeToolchain(self)
34+
tc.generate()
35+
36+
def build(self):
37+
cmake = CMake(self)
38+
cmake.configure()
39+
cmake.build()
40+
41+
def package(self):
42+
copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
43+
cmake = CMake(self)
44+
cmake.install()
45+
rmdir(self, os.path.join(self.package_folder, "share"))
46+
rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
47+
48+
def package_info(self):
49+
self.cpp_info.set_property("cmake_file_name", "gsl-lite")
50+
self.cpp_info.set_property("cmake_target_name", "gsl-lite::gsl-lite")
51+
self.cpp_info.set_property("cmake_target_aliases", ["gsl::gsl-lite"])
52+
53+
self.cpp_info.set_property("cmake_config_version_compat", "SameMajorVersion")
54+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
cmake_minimum_required(VERSION 3.15)
2+
project(test_package LANGUAGES CXX)
3+
4+
find_package(gsl-lite REQUIRED)
5+
6+
add_executable(${PROJECT_NAME})
7+
target_sources(${PROJECT_NAME} PRIVATE test_package.cpp)
8+
target_link_libraries(${PROJECT_NAME} PRIVATE gsl-lite::gsl-lite)
9+
10+
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
#include <iostream>
3+
4+
#include <gsl-lite/gsl-lite.hpp>
5+
6+
void printCmdArgs( gsl_lite::span<gsl_lite::zstring const> cmdArgs )
7+
{
8+
gsl_Expects( !cmdArgs.empty() );
9+
10+
auto argsWithoutExeName = cmdArgs.subspan( 1 );
11+
for ( auto arg : argsWithoutExeName )
12+
{
13+
std::cout << arg << "\n";
14+
}
15+
}
16+
17+
int main( int argc, char* argv[] )
18+
{
19+
auto numArgs = gsl_lite::narrow_failfast<std::size_t>( argc );
20+
auto cmdArgs = gsl_lite::make_span( argv, numArgs );
21+
printCmdArgs( cmdArgs );
22+
}

recipes/gsl-lite/config.yml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
versions:
2+
"1.0.1":
3+
folder: 1.x
4+
"0.43.0":
5+
folder: old
26
"0.42.0":
3-
folder: all
7+
folder: old
48
"0.41.0":
5-
folder: all
9+
folder: old
610
"0.40.0":
7-
folder: all
11+
folder: old
812
"0.39.0":
9-
folder: all
13+
folder: old
1014
"0.38.1":
11-
folder: all
15+
folder: old
1216
"0.38.0":
13-
folder: all
17+
folder: old
1418
"0.37.0":
15-
folder: all
19+
folder: old

recipes/gsl-lite/all/conandata.yml renamed to recipes/gsl-lite/old/conandata.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
sources:
2+
"0.43.0":
3+
url: "https://github.com/gsl-lite/gsl-lite/archive/v0.43.0.tar.gz"
4+
sha256: "e48c3138648156d2b85905b1d280d661fad61524c5c0ca10d3857036ca3dd519"
25
"0.42.0":
36
url: "https://github.com/gsl-lite/gsl-lite/archive/v0.42.0.tar.gz"
47
sha256: "54a1b6f9db72eab5d8dcaf06b36d32d4f5da3471d91dac71aba19fe15291a773"
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from conan import ConanFile
2+
from conan.tools.build import can_run
3+
from conan.tools.cmake import CMake, cmake_layout
4+
import os
5+
6+
7+
class TestPackageConan(ConanFile):
8+
settings = "os", "arch", "compiler", "build_type"
9+
generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv"
10+
test_type = "explicit"
11+
12+
def requirements(self):
13+
self.requires(self.tested_reference_str)
14+
15+
def layout(self):
16+
cmake_layout(self)
17+
18+
def build(self):
19+
cmake = CMake(self)
20+
cmake.configure()
21+
cmake.build()
22+
23+
def test(self):
24+
if can_run(self):
25+
bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package")
26+
self.run(bin_path, env="conanrun")

0 commit comments

Comments
 (0)