22from pathlib import Path
33
44from conan import ConanFile
5- from conan .tools .build import cross_building
6- from conan .tools .env import Environment , VirtualBuildEnv
5+ from conan .tools .env import VirtualBuildEnv
76from conan .tools .files import chdir , copy , get
87from conan .tools .layout import basic_layout
98
@@ -19,39 +18,17 @@ class EmSDKConan(ConanFile):
1918 license = "MIT"
2019 package_type = "application"
2120 settings = "os" , "arch"
22- upload_policy = "skip"
23- build_policy = "missing"
2421
2522 def layout (self ):
2623 basic_layout (self , src_folder = "src" )
2724
2825 def source (self ):
2926 get (self , ** self .conan_data ["sources" ][self .version ], destination = self .source_folder , strip_root = True )
3027
31- @property
32- def _relative_paths (self ):
33- return ["bin" , os .path .join ("bin" , "upstream" , "emscripten" )]
34-
35- @property
36- def _paths (self ):
37- return [os .path .join (self .package_folder , path ) for path in self ._relative_paths ]
38-
39- @property
40- def _emsdk (self ):
41- return os .path .join (self .package_folder , "bin" )
42-
4328 @property
4429 def _emscripten (self ):
4530 return os .path .join (self .package_folder , "bin" , "upstream" , "emscripten" )
4631
47- @property
48- def _em_config (self ):
49- return os .path .join (self .package_folder , "bin" , ".emscripten" )
50-
51- @property
52- def _em_cache (self ):
53- return os .path .join (self .package_folder , "bin" , ".emscripten_cache" )
54-
5532 @property
5633 def _node_path (self ):
5734 subfolders = [path for path in (Path (self .package_folder ) / "bin" / "node" ).iterdir () if path .is_dir ()]
@@ -77,28 +54,21 @@ def build(self):
7754 def package (self ):
7855 copy (self , "LICENSE" , src = self .source_folder , dst = os .path .join (self .package_folder , "licenses" ))
7956 copy (self , "*" , src = self .source_folder , dst = os .path .join (self .package_folder , "bin" ))
80- if not cross_building (self ):
81- env = Environment ()
82- env .prepend_path ("PATH" , self ._paths )
83- env .define_path ("EMSDK" , self ._emsdk )
84- env .define_path ("EMSCRIPTEN" , self ._emscripten )
85- env .define_path ("EM_CONFIG" , self ._em_config )
86- env .define_path ("EM_CACHE" , self ._em_cache )
87- with env .vars (self , scope = "emsdk" ).apply ():
88- self .run ("which embuilder" )
89- self .run ("embuilder build MINIMAL" , env = ["conanrun" ]) # force cache population
90- # Avoid cache failures in case this package is uploaded as paths in sanity.txt are absolute
91- sanity_path = os .path .join (self ._em_cache , "sanity.txt" )
92- if os .path .exists (sanity_path ):
93- os .remove (sanity_path )
57+
58+ def finalize (self ):
59+ copy (self , "*" , src = self .immutable_package_folder , dst = self .package_folder )
60+ embuilder = os .path .join (
61+ self ._emscripten , "embuilder" if self .info .settings .os != "Windows" else "embuilder.bat"
62+ )
63+ self .run (f"{ embuilder } build MINIMAL" )
9464
9565 def _define_tool_var (self , value ):
9666 suffix = ".bat" if self .settings .os == "Windows" else ""
9767 path = os .path .join (self ._emscripten , f"{ value } { suffix } " )
9868 return path
9969
10070 def package_info (self ):
101- self .cpp_info .bindirs = self . _relative_paths + [ self ._node_path ]
71+ self .cpp_info .bindirs = [ "bin" , os . path . join ( "bin" , "upstream" , "emscripten" ), self ._node_path ]
10272 self .cpp_info .includedirs = []
10373 self .cpp_info .libdirs = []
10474 self .cpp_info .resdirs = []
@@ -119,10 +89,10 @@ def package_info(self):
11989 )
12090 self .conf_info .prepend ("tools.cmake.cmaketoolchain:user_toolchain" , toolchain )
12191
122- self .buildenv_info .define_path ("EMSDK" , self ._emsdk )
92+ self .buildenv_info .define_path ("EMSDK" , os . path . join ( self .package_folder , "bin" ) )
12393 self .buildenv_info .define_path ("EMSCRIPTEN" , self ._emscripten )
124- self .buildenv_info .define_path ("EM_CONFIG" , self ._em_config )
125- self .buildenv_info .define_path ("EM_CACHE" , self ._em_cache )
94+ self .buildenv_info .define_path ("EM_CONFIG" , os . path . join ( self .package_folder , "bin" , ".emscripten" ) )
95+ self .buildenv_info .define_path ("EM_CACHE" , os . path . join ( self .package_folder , "bin" , ".emscripten_cache" ) )
12696
12797 compiler_executables = {
12898 "c" : self ._define_tool_var ("emcc" ),
0 commit comments