11from conan import ConanFile
2- from conan .tools .files import copy
2+ from conan .tools .files import copy , load
33import os
44
5-
65class RenodeConan (ConanFile ):
76 name = "renode"
87 license = "MIT"
9- # We are having a copy of whatever is there on Stash in github for now.
108 url = "https://stash.silabs.com/projects/EMBSW/repos/renode/browse"
119 description = "Antmicro's open source simulation and virtual development framework for complex embedded systems"
1210 topics = ("iot" , "simulation" , "embedded-systems" , "arm" , "risc-v" , "x86" )
1311 settings = "os" , "arch"
14- # Copy all files from source folder to build folder
1512 exports_sources = "*"
1613 user = "silabs"
17- # At this point, we do not have a process to build renode for multiple architectures.
18- # So we are using the build_policy missing to build it for the other architectures, on the users machine.
19- build_policy = "missing"
14+
15+ def set_version (self ):
16+ version_path = os .path .join (self .recipe_folder , "tools" , "version" )
17+ self .version = load (self , version_path ).strip ()
2018
2119 def requirements (self ):
2220 self .tool_requires ("dotnet_tools/8.0.409@silabs" )
2321 self .tool_requires ("cmake/3.27.6" )
2422
25- def set_version (self ) -> None :
26- with open (os .path .join (self .recipe_folder , "tools" , "version" ), "r" ) as f :
27- self .version = f .read ().strip ()
28-
29- def layout (self ):
30- self .folders .build = "build"
31-
32- def build (self ) -> None :
23+ def build (self ):
3324 if self .settings .os == "Windows" :
3425 self .run ("build.cmd" , cwd = self .source_folder , shell = True )
3526 else :
36- self .run ("dotnet --version" )
37- self .run ("cmake --version" )
38- self .run ("chmod +x build.sh" , cwd = self .source_folder )
27+ self .run ("dotnet --version" , env = "conanbuild" )
28+ self .run ("cmake --version" , env = "conanbuild" )
29+
30+ build_script = os .path .join (self .source_folder , "build.sh" )
31+ if not os .path .isfile (build_script ):
32+ raise FileNotFoundError (f"build.sh not found at { build_script } " )
33+ self .run (f"chmod +x { build_script } " )
34+
3935 if self .settings .arch == "armv8" :
40- self . run ( "./build.sh --net --host- arch aarch64", cwd = self . source_folder )
36+ arch = " aarch64"
4137 elif self .settings .arch == "x86_64" :
42- self . run ( "./build.sh --net --host- arch x86_64", cwd = self . source_folder )
38+ arch = " x86_64"
4339 else :
44- self . run ( "./build.sh --net --host- arch x86", cwd = self . source_folder )
40+ arch = " x86"
4541
46- def package (self ) -> None :
47- # Copy all files from build folder to package folder
48- copy (self , "*" , self .build_folder , self .package_folder )
42+ self .run (f"{ build_script } --net --host-arch { arch } " , cwd = self .source_folder )
4943
50- # Copy all files from current directory to package folder
51- copy (self , "*" , self .source_folder , self .package_folder , keep_path = True )
44+ def package (self ):
45+ # Copy build output
46+ copy (self , "*" , src = self .source_folder , dst = self .package_folder , keep_path = True )
5247
53- def package_info (self ) -> None :
48+ def package_info (self ):
49+ renode_path = os .path .join (self .package_folder , "." )
5450 self .runenv_info .define ("RENODE_HOME" , self .package_folder )
55- self .runenv_info .append_path ("PATH" , os . path . join ( self . package_folder , "renode" ) )
51+ self .runenv_info .append_path ("PATH" , renode_path )
0 commit comments