@@ -97,12 +97,29 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
9797
9898< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> argparse</ span >
9999< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> os</ span >
100+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> platform</ span >
100101< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> shlex</ span >
101102< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> shutil</ span >
102103< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> subprocess</ span >
103104< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> sys</ span >
104105< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> pathlib</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Path</ span >
105106
107+ < span class ="n "> CONDA_PLATFORM_MAP</ span > < span class ="o "> =</ span > < span class ="p "> {</ span >
108+ < span class ="p "> (</ span > < span class ="s1 "> 'linux'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'x86_64'</ span > < span class ="p "> ):</ span > < span class ="s1 "> 'linux-64'</ span > < span class ="p "> ,</ span >
109+ < span class ="p "> (</ span > < span class ="s1 "> 'linux'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'aarch64'</ span > < span class ="p "> ):</ span > < span class ="s1 "> 'linux-aarch64'</ span > < span class ="p "> ,</ span >
110+ < span class ="p "> (</ span > < span class ="s1 "> 'linux'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'ppc64le'</ span > < span class ="p "> ):</ span > < span class ="s1 "> 'linux-ppc64le'</ span > < span class ="p "> ,</ span >
111+ < span class ="p "> (</ span > < span class ="s1 "> 'osx'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'x86_64'</ span > < span class ="p "> ):</ span > < span class ="s1 "> 'osx-64'</ span > < span class ="p "> ,</ span >
112+ < span class ="p "> (</ span > < span class ="s1 "> 'osx'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'arm64'</ span > < span class ="p "> ):</ span > < span class ="s1 "> 'osx-arm64'</ span > < span class ="p "> ,</ span >
113+ < span class ="p "> }</ span >
114+
115+ < span class ="n "> LOCAL_MACHE_SOURCE_ENV</ span > < span class ="o "> =</ span > < span class ="s1 "> 'MACHE_LOCAL_SOURCE_PATH'</ span >
116+ < span class ="n "> PIXI_ENV_VARS_TO_UNSET</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
117+ < span class ="s1 "> 'PIXI_PROJECT_MANIFEST'</ span > < span class ="p "> ,</ span >
118+ < span class ="s1 "> 'PIXI_PROJECT_ROOT'</ span > < span class ="p "> ,</ span >
119+ < span class ="s1 "> 'PIXI_ENVIRONMENT_NAME'</ span > < span class ="p "> ,</ span >
120+ < span class ="s1 "> 'PIXI_IN_SHELL'</ span > < span class ="p "> ,</ span >
121+ < span class ="p "> )</ span >
122+
106123
107124< div class ="viewcode-block " id ="check_call ">
108125< a class ="viewcode-back " href ="../../../developers_guide/generated/mache.deploy.bootstrap.check_call.html#mache.deploy.bootstrap.check_call "> [docs]</ a >
@@ -297,7 +314,7 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
297314< span class ="sd "> running a nested shell process.</ span >
298315< span class ="sd "> """</ span >
299316 < span class ="n "> hook_cmd</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
300- < span class ="s1 "> 'env -u PIXI_PROJECT_MANIFEST -u PIXI_PROJECT_ROOT '</ span >
317+ < span class ="sa " > f </ span > < span class =" s1 "> '</ span > < span class =" si " > { </ span > < span class =" n " > build_pixi_env_unset_prefix </ span > < span class =" p " > () </ span > < span class =" si " > } </ span > < span class =" s1 " > '</ span >
301318 < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> shlex</ span > < span class ="o "> .</ span > < span class ="n "> quote</ span > < span class ="p "> (</ span > < span class ="n "> pixi_exe</ span > < span class ="p "> )</ span > < span class ="si "> }</ span > < span class ="s1 "> shell-hook -s bash -m '</ span >
302319 < span class ="sa "> f</ span > < span class ="s1 "> '</ span > < span class ="si "> {</ span > < span class ="n "> shlex</ span > < span class ="o "> .</ span > < span class ="n "> quote</ span > < span class ="p "> (</ span > < span class ="n "> pixi_toml</ span > < span class ="p "> )</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span >
303320 < span class ="p "> )</ span >
@@ -463,7 +480,7 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
463480
464481 < span class ="n "> cmd_install</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
465482 < span class ="sa "> f</ span > < span class ="s1 "> 'cd "</ span > < span class ="si "> {</ span > < span class ="n "> bootstrap_dir</ span > < span class ="si "> }</ span > < span class ="s1 "> " && '</ span >
466- < span class ="s1 "> 'env -u PIXI_PROJECT_MANIFEST -u PIXI_PROJECT_ROOT '</ span >
483+ < span class ="sa " > f </ span > < span class =" s1 "> '</ span > < span class =" si " > { </ span > < span class =" n " > build_pixi_env_unset_prefix </ span > < span class =" p " > () </ span > < span class =" si " > } </ span > < span class =" s1 " > '</ span >
467484 < span class ="sa "> f</ span > < span class ="s1 "> '"</ span > < span class ="si "> {</ span > < span class ="n "> pixi_exe</ span > < span class ="si "> }</ span > < span class ="s1 "> " install'</ span >
468485 < span class ="p "> )</ span >
469486 < span class ="n "> check_call</ span > < span class ="p "> (</ span > < span class ="n "> cmd_install</ span > < span class ="p "> ,</ span > < span class ="n "> log_filename</ span > < span class ="p "> ,</ span > < span class ="n "> quiet</ span > < span class ="p "> )</ span >
@@ -490,7 +507,7 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
490507
491508 < span class ="n "> cmd_install</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
492509 < span class ="sa "> f</ span > < span class ="s1 "> 'cd "</ span > < span class ="si "> {</ span > < span class ="n "> bootstrap_dir</ span > < span class ="si "> }</ span > < span class ="s1 "> " && '</ span >
493- < span class ="s1 "> 'env -u PIXI_PROJECT_MANIFEST -u PIXI_PROJECT_ROOT '</ span >
510+ < span class ="sa " > f </ span > < span class =" s1 "> '</ span > < span class =" si " > { </ span > < span class =" n " > build_pixi_env_unset_prefix </ span > < span class =" p " > () </ span > < span class =" si " > } </ span > < span class =" s1 " > '</ span >
494511 < span class ="sa "> f</ span > < span class ="s1 "> '"</ span > < span class ="si "> {</ span > < span class ="n "> pixi_exe</ span > < span class ="si "> }</ span > < span class ="s1 "> " install'</ span >
495512 < span class ="p "> )</ span >
496513 < span class ="n "> check_call</ span > < span class ="p "> (</ span > < span class ="n "> cmd_install</ span > < span class ="p "> ,</ span > < span class ="n "> log_filename</ span > < span class ="p "> ,</ span > < span class ="n "> quiet</ span > < span class ="p "> )</ span >
@@ -679,6 +696,23 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
679696 < span class ="k "> return</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> path</ span > < span class ="o "> .</ span > < span class ="n "> join</ span > < span class ="p "> (</ span > < span class ="n "> home</ span > < span class ="p "> ,</ span > < span class ="s1 "> '.pixi'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'bin'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'pixi'</ span > < span class ="p "> )</ span >
680697
681698
699+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> build_pixi_env_unset_prefix</ span > < span class ="p "> ():</ span >
700+ < span class ="k "> return</ span > < span class ="s1 "> 'env '</ span > < span class ="o "> +</ span > < span class ="s1 "> ' '</ span > < span class ="o "> .</ span > < span class ="n "> join</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s1 "> '-u </ span > < span class ="si "> {</ span > < span class ="n "> name</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span > < span class ="k "> for</ span > < span class ="n "> name</ span > < span class ="ow "> in</ span > < span class ="n "> PIXI_ENV_VARS_TO_UNSET</ span > < span class ="p "> )</ span >
701+
702+
703+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> _get_pixi_platform</ span > < span class ="p "> ():</ span >
704+ < span class ="n "> system</ span > < span class ="o "> =</ span > < span class ="n "> platform</ span > < span class ="o "> .</ span > < span class ="n "> system</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="n "> lower</ span > < span class ="p "> ()</ span >
705+ < span class ="k "> if</ span > < span class ="n "> system</ span > < span class ="o "> ==</ span > < span class ="s1 "> 'darwin'</ span > < span class ="p "> :</ span >
706+ < span class ="n "> system</ span > < span class ="o "> =</ span > < span class ="s1 "> 'osx'</ span >
707+ < span class ="n "> machine</ span > < span class ="o "> =</ span > < span class ="n "> platform</ span > < span class ="o "> .</ span > < span class ="n "> machine</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="n "> lower</ span > < span class ="p "> ()</ span >
708+ < span class ="k "> try</ span > < span class ="p "> :</ span >
709+ < span class ="k "> return</ span > < span class ="n "> CONDA_PLATFORM_MAP</ span > < span class ="p "> [(</ span > < span class ="n "> system</ span > < span class ="p "> ,</ span > < span class ="n "> machine</ span > < span class ="p "> )]</ span >
710+ < span class ="k "> except</ span > < span class ="ne "> KeyError</ span > < span class ="k "> as</ span > < span class ="n "> exc</ span > < span class ="p "> :</ span >
711+ < span class ="k "> raise</ span > < span class ="ne "> ValueError</ span > < span class ="p "> (</ span >
712+ < span class ="sa "> f</ span > < span class ="s1 "> 'Unsupported platform for pixi bootstrap: </ span > < span class ="si "> {</ span > < span class ="n "> system</ span > < span class ="si "> }</ span > < span class ="s1 "> </ span > < span class ="si "> {</ span > < span class ="n "> machine</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span >
713+ < span class ="p "> )</ span > < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> exc</ span >
714+
715+
682716< span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> _install_pixi</ span > < span class ="p "> (</ span > < span class ="o "> *</ span > < span class ="p "> ,</ span > < span class ="n "> log_filename</ span > < span class ="p "> ,</ span > < span class ="n "> quiet</ span > < span class ="p "> ,</ span > < span class ="n "> pixi_bin_dir</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> ):</ span >
683717 < span class ="n "> env_prefix_parts</ span > < span class ="o "> =</ span > < span class ="p "> [</ span >
684718 < span class ="c1 "> # Avoid modifying shell rc files during bootstrap.</ span >
@@ -782,6 +816,7 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
782816 < span class ="s1 "> '[workspace]'</ span > < span class ="p "> ,</ span >
783817 < span class ="sa "> f</ span > < span class ="s1 "> 'name = "</ span > < span class ="si "> {</ span > < span class ="n "> name</ span > < span class ="si "> }</ span > < span class ="s1 "> "'</ span > < span class ="p "> ,</ span >
784818 < span class ="s1 "> 'channels = ["conda-forge"]'</ span > < span class ="p "> ,</ span >
819+ < span class ="sa "> f</ span > < span class ="s1 "> 'platforms = ["</ span > < span class ="si "> {</ span > < span class ="n "> _get_pixi_platform</ span > < span class ="p "> ()</ span > < span class ="si "> }</ span > < span class ="s1 "> "]'</ span > < span class ="p "> ,</ span >
785820 < span class ="s1 "> 'channel-priority = "strict"'</ span > < span class ="p "> ,</ span >
786821 < span class ="s1 "> ''</ span > < span class ="p "> ,</ span >
787822 < span class ="s1 "> '[dependencies]'</ span > < span class ="p "> ,</ span >
@@ -822,6 +857,32 @@ <h1>Source code for mache.deploy.bootstrap</h1><div class="highlight"><pre>
822857
823858 < span class ="n "> build_root</ span > < span class ="o "> .</ span > < span class ="n "> mkdir</ span > < span class ="p "> (</ span > < span class ="n "> parents</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> ,</ span > < span class ="n "> exist_ok</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
824859
860+ < span class ="n "> local_source</ span > < span class ="o "> =</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="n "> LOCAL_MACHE_SOURCE_ENV</ span > < span class ="p "> )</ span >
861+ < span class ="k "> if</ span > < span class ="n "> local_source</ span > < span class ="p "> :</ span >
862+ < span class ="n "> source_repo</ span > < span class ="o "> =</ span > < span class ="n "> Path</ span > < span class ="p "> (</ span >
863+ < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> path</ span > < span class ="o "> .</ span > < span class ="n "> abspath</ span > < span class ="p "> (</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> path</ span > < span class ="o "> .</ span > < span class ="n "> expanduser</ span > < span class ="p "> (</ span > < span class ="n "> local_source</ span > < span class ="p "> ))</ span >
864+ < span class ="p "> )</ span > < span class ="o "> .</ span > < span class ="n "> resolve</ span > < span class ="p "> ()</ span >
865+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="n "> source_repo</ span > < span class ="o "> .</ span > < span class ="n "> is_dir</ span > < span class ="p "> ():</ span >
866+ < span class ="k "> raise</ span > < span class ="ne "> RuntimeError</ span > < span class ="p "> (</ span >
867+ < span class ="sa "> f</ span > < span class ="s1 "> 'Local mache source override does not exist: </ span > < span class ="si "> {</ span > < span class ="n "> source_repo</ span > < span class ="si "> }</ span > < span class ="s1 "> '</ span >
868+ < span class ="p "> )</ span >
869+
870+ < span class ="k "> try</ span > < span class ="p "> :</ span >
871+ < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> symlink</ span > < span class ="p "> (</ span > < span class ="n "> source_repo</ span > < span class ="p "> ,</ span > < span class ="n "> repo_dir</ span > < span class ="p "> ,</ span > < span class ="n "> target_is_directory</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
872+ < span class ="k "> except</ span > < span class ="ne "> OSError</ span > < span class ="p "> :</ span >
873+ < span class ="n "> shutil</ span > < span class ="o "> .</ span > < span class ="n "> copytree</ span > < span class ="p "> (</ span >
874+ < span class ="n "> source_repo</ span > < span class ="p "> ,</ span >
875+ < span class ="n "> repo_dir</ span > < span class ="p "> ,</ span >
876+ < span class ="n "> ignore</ span > < span class ="o "> =</ span > < span class ="n "> shutil</ span > < span class ="o "> .</ span > < span class ="n "> ignore_patterns</ span > < span class ="p "> (</ span >
877+ < span class ="s1 "> '.git'</ span > < span class ="p "> ,</ span >
878+ < span class ="s1 "> '.pixi'</ span > < span class ="p "> ,</ span >
879+ < span class ="s1 "> 'deploy_tmp'</ span > < span class ="p "> ,</ span >
880+ < span class ="s1 "> '__pycache__'</ span > < span class ="p "> ,</ span >
881+ < span class ="s1 "> '*.pyc'</ span > < span class ="p "> ,</ span >
882+ < span class ="p "> ),</ span >
883+ < span class ="p "> )</ span >
884+ < span class ="k "> return</ span >
885+
825886 < span class ="n "> commands</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
826887 < span class ="sa "> f</ span > < span class ="s1 "> 'cd "</ span > < span class ="si "> {</ span > < span class ="n "> build_root</ span > < span class ="si "> !s}</ span > < span class ="s1 "> " && '</ span >
827888 < span class ="o "> +</ span > < span class ="s2 "> "GIT_SSH_COMMAND='ssh -oBatchMode=yes' git clone "</ span >
0 commit comments