fractal-server 2.15.0a0__py3-none-any.whl → 2.15.0a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/app/routes/api/v2/task_collection_pixi.py +1 -1
  3. fractal_server/app/routes/api/v2/task_group_lifecycle.py +18 -4
  4. fractal_server/ssh/_fabric.py +26 -0
  5. fractal_server/tasks/v2/local/__init__.py +1 -0
  6. fractal_server/tasks/v2/local/collect.py +9 -12
  7. fractal_server/tasks/v2/local/collect_pixi.py +53 -41
  8. fractal_server/tasks/v2/local/deactivate.py +7 -14
  9. fractal_server/tasks/v2/local/deactivate_pixi.py +8 -16
  10. fractal_server/tasks/v2/local/reactivate.py +8 -15
  11. fractal_server/tasks/v2/local/reactivate_pixi.py +166 -0
  12. fractal_server/tasks/v2/ssh/__init__.py +2 -0
  13. fractal_server/tasks/v2/ssh/collect.py +7 -13
  14. fractal_server/tasks/v2/ssh/collect_pixi.py +44 -34
  15. fractal_server/tasks/v2/ssh/deactivate.py +7 -14
  16. fractal_server/tasks/v2/ssh/deactivate_pixi.py +128 -0
  17. fractal_server/tasks/v2/ssh/reactivate.py +7 -14
  18. fractal_server/tasks/v2/ssh/reactivate_pixi.py +108 -0
  19. fractal_server/tasks/v2/templates/pixi_1_extract.sh +40 -0
  20. fractal_server/tasks/v2/templates/pixi_2_install.sh +48 -0
  21. fractal_server/tasks/v2/templates/pixi_3_post_install.sh +80 -0
  22. fractal_server/tasks/v2/utils_background.py +35 -28
  23. fractal_server/tasks/v2/utils_pixi.py +2 -0
  24. {fractal_server-2.15.0a0.dist-info → fractal_server-2.15.0a2.dist-info}/METADATA +1 -1
  25. {fractal_server-2.15.0a0.dist-info → fractal_server-2.15.0a2.dist-info}/RECORD +28 -23
  26. fractal_server/tasks/v2/templates/pixi_1_collect.sh +0 -70
  27. {fractal_server-2.15.0a0.dist-info → fractal_server-2.15.0a2.dist-info}/LICENSE +0 -0
  28. {fractal_server-2.15.0a0.dist-info → fractal_server-2.15.0a2.dist-info}/WHEEL +0 -0
  29. {fractal_server-2.15.0a0.dist-info → fractal_server-2.15.0a2.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
1
+ import logging
1
2
  from pathlib import Path
2
3
  from typing import TypeVar
3
4
 
@@ -24,6 +25,24 @@ def add_commit_refresh(*, obj: T, db: DBSyncSession) -> T:
24
25
  return obj
25
26
 
26
27
 
28
+ def get_activity_and_task_group(
29
+ *,
30
+ task_group_activity_id: int,
31
+ task_group_id: int,
32
+ db: DBSyncSession,
33
+ ) -> tuple[bool, TaskGroupV2, TaskGroupActivityV2]:
34
+ task_group = db.get(TaskGroupV2, task_group_id)
35
+ activity = db.get(TaskGroupActivityV2, task_group_activity_id)
36
+ if activity is None or task_group is None:
37
+ logging.error(
38
+ "Cannot find database rows with "
39
+ f"{task_group_id=} and {task_group_activity_id=}:\n"
40
+ f"{task_group=}\n{activity=}. Exit."
41
+ )
42
+ return False, None, None
43
+ return True, task_group, activity
44
+
45
+
27
46
  def fail_and_cleanup(
28
47
  task_group: TaskGroupV2,
29
48
  task_group_activity: TaskGroupActivityV2,
@@ -53,8 +72,7 @@ def prepare_tasks_metadata(
53
72
  package_manifest: ManifestV2,
54
73
  package_root: Path,
55
74
  python_bin: Path | None = None,
56
- pixi_bin: str | None = None,
57
- pixi_manifest_path: str | None = None,
75
+ project_python_wrapper: Path | None = None,
58
76
  package_version: str | None = None,
59
77
  ) -> list[TaskCreateV2]:
60
78
  """
@@ -65,17 +83,19 @@ def prepare_tasks_metadata(
65
83
  package_root:
66
84
  package_version:
67
85
  python_bin:
68
- pixi_bin:
86
+ project_python_wrapper:
69
87
  """
70
- if bool(pixi_bin is None) == bool(python_bin is None):
71
- raise UnreachableBranchError(
72
- f"Either {pixi_bin} or {python_bin} must be set."
73
- )
74
- if pixi_bin is not None and pixi_manifest_path is None:
88
+
89
+ if bool(project_python_wrapper is None) == bool(python_bin is None):
75
90
  raise UnreachableBranchError(
76
- f"If {pixi_bin} is set, pixi_manifest_path must be set."
91
+ f"Either {project_python_wrapper} or {python_bin} must be set."
77
92
  )
78
93
 
94
+ if python_bin is not None:
95
+ actual_python = python_bin
96
+ else:
97
+ actual_python = project_python_wrapper
98
+
79
99
  task_list = []
80
100
  for _task in package_manifest.task_list:
81
101
  # Set non-command attributes
@@ -89,28 +109,15 @@ def prepare_tasks_metadata(
89
109
  # Set command attributes
90
110
  if _task.executable_non_parallel is not None:
91
111
  non_parallel_path = package_root / _task.executable_non_parallel
92
- if python_bin is not None:
93
- cmd_non_parallel = (
94
- f"{python_bin.as_posix()} {non_parallel_path.as_posix()}"
95
- )
96
- else:
97
- cmd_non_parallel = (
98
- f"{pixi_bin} run --manifest-path {pixi_manifest_path} "
99
- "--no-lockfile-update python "
100
- f"{non_parallel_path.as_posix()}"
101
- )
112
+ cmd_non_parallel = (
113
+ f"{actual_python.as_posix()} {non_parallel_path.as_posix()}"
114
+ )
102
115
  task_attributes["command_non_parallel"] = cmd_non_parallel
103
116
  if _task.executable_parallel is not None:
104
117
  parallel_path = package_root / _task.executable_parallel
105
- if python_bin is not None:
106
- cmd_parallel = (
107
- f"{python_bin.as_posix()} {parallel_path.as_posix()}"
108
- )
109
- else:
110
- cmd_parallel = (
111
- f"{pixi_bin} run --manifest-path {pixi_manifest_path} "
112
- f"--no-lockfile-update python {parallel_path.as_posix()}"
113
- )
118
+ cmd_parallel = (
119
+ f"{actual_python.as_posix()} {parallel_path.as_posix()}"
120
+ )
114
121
  task_attributes["command_parallel"] = cmd_parallel
115
122
  # Create object
116
123
  task_obj = TaskCreateV2(
@@ -7,6 +7,7 @@ class ParsedOutput(TypedDict):
7
7
  package_root: str
8
8
  venv_size: str
9
9
  venv_file_number: str
10
+ project_python_wrapper: str
10
11
 
11
12
 
12
13
  def parse_collect_stdout(stdout: str) -> ParsedOutput:
@@ -17,6 +18,7 @@ def parse_collect_stdout(stdout: str) -> ParsedOutput:
17
18
  ("Package folder:", "package_root"),
18
19
  ("Disk usage:", "venv_size"),
19
20
  ("Number of files:", "venv_file_number"),
21
+ ("Project Python wrapper:", "project_python_wrapper"),
20
22
  ]
21
23
  stdout_lines = stdout.splitlines()
22
24
  attributes = dict()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fractal-server
3
- Version: 2.15.0a0
3
+ Version: 2.15.0a2
4
4
  Summary: Backend component of the Fractal analytics platform
5
5
  License: BSD-3-Clause
6
6
  Author: Tommaso Comparin
@@ -1,4 +1,4 @@
1
- fractal_server/__init__.py,sha256=bRI_27InR891I2DVNDGmrq1dL1GzKxuY-VlNbPye6Eo,25
1
+ fractal_server/__init__.py,sha256=p2CNc7pXWHJeIFFY2UyN5qnuVf1-pAw9mr2D7XjIBDI,25
2
2
  fractal_server/__main__.py,sha256=rkM8xjY1KeS3l63irB8yCrlVobR-73uDapC4wvrIlxI,6957
3
3
  fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
4
4
  fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -47,9 +47,9 @@ fractal_server/app/routes/api/v2/submit.py,sha256=_BDkWtFdo8-p7kZ0Oxaidei04MfuBe
47
47
  fractal_server/app/routes/api/v2/task.py,sha256=ptS47XtxnHzk9bPNZV24Wfroo5sP19RE0-LsfX0ZvOc,7018
48
48
  fractal_server/app/routes/api/v2/task_collection.py,sha256=MRaf_-rI4dL6Sfn8XuDUZ-f9a_60V-ChPvPEEuzCzCc,12599
49
49
  fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=3EZAzTVlt3wrHAuwxfcYo7LpHefLCcQUctZuolJOQHE,6728
50
- fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=aeosGRONv4C53uwb4sFMGIvPvjzi59d7CsxUv86D6N4,8218
50
+ fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=oHTTB1gXoX2mbuQTvH7SuW4GYrGOfmb9xHZ8DwChmcE,8219
51
51
  fractal_server/app/routes/api/v2/task_group.py,sha256=M96VoKcLqOpZlY0RWnsHza8jN0dzAWK9lxw87Om3Fbw,9063
52
- fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=MUtLo_XKoGQTV392dLlNgXuRkrbOTbrxUeyp5uPHgw8,9339
52
+ fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=vCIAuSkepwLZw05ZLn46MOB4x6ZN_v3tXXyjv4f6rJw,10070
53
53
  fractal_server/app/routes/api/v2/task_version_update.py,sha256=o8W_C0I84X0u8gAMnCvi8ChiVAKrb5WzUBuJLSuujCA,8235
54
54
  fractal_server/app/routes/api/v2/workflow.py,sha256=gwMtpfUY_JiTv5_R_q1I9WNkp6nTqEVtYx8jWNJRxcU,10227
55
55
  fractal_server/app/routes/api/v2/workflow_import.py,sha256=kOGDaCj0jCGK1WSYGbnUjtUg2U1YxUY9UMH-2ilqJg4,9027
@@ -184,36 +184,41 @@ fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.p
184
184
  fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=TDWCaIoM0Q4SpRWmR9zr_rdp3lJXhCfBPTMhtrP5xYE,3950
185
185
  fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
186
  fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
187
- fractal_server/ssh/_fabric.py,sha256=AK5E2LXVv0fNilSCy4Zufh0D5QdMozL4OtvNKgMSli4,24155
187
+ fractal_server/ssh/_fabric.py,sha256=3Q0nlXctEXtRspQvg00wzCOyYK-0fAJlCowQuXEMk9I,25118
188
188
  fractal_server/string_tools.py,sha256=qLB5u6-4QxXPiZrUeWn_cEo47axj4OXFzDd47kNTIWw,1847
189
189
  fractal_server/syringe.py,sha256=3YJeIALH-wibuJ9R5VMNYUWh7x1-MkWT0SqGcWG5MY8,2795
190
190
  fractal_server/tasks/__init__.py,sha256=kadmVUoIghl8s190_Tt-8f-WBqMi8u8oU4Pvw39NHE8,23
191
191
  fractal_server/tasks/utils.py,sha256=V7dj8o2AnoHhGSTYlqJHcRFhCIpmOrMOUhtiE_DvRVA,291
192
192
  fractal_server/tasks/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
- fractal_server/tasks/v2/local/__init__.py,sha256=d8xO1H1kAGZFk707BKhNhjxPjdnoPGxHiNcsC_ZGcJE,253
193
+ fractal_server/tasks/v2/local/__init__.py,sha256=S842wRersYKBKjc7xbmj0ov8b5i1YuCHa2f_yYuxcaI,312
194
194
  fractal_server/tasks/v2/local/_utils.py,sha256=n-w1IqgOTeeXLE0LoHBixrU7kkg-eYEPWepur6g7DQA,2664
195
- fractal_server/tasks/v2/local/collect.py,sha256=WOwLZwEH6ez-2fmjwZP7cXQ7KwktelUgsmMxOpwhsn0,12243
196
- fractal_server/tasks/v2/local/collect_pixi.py,sha256=qnw0AYT8upyhdxt6OmEMEM_nnqAehlStFxd1DdQYdWE,9510
197
- fractal_server/tasks/v2/local/deactivate.py,sha256=nACIpbo5guF3r3b0QUv7g6Yx-p37BHpvMvEZnxhs-qk,10164
198
- fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=s6A7_HhTy6bSTE8vVgGGtAQfBtOdNtb-s9Yjv4wYc5g,3989
199
- fractal_server/tasks/v2/local/reactivate.py,sha256=go3q2QSD3L7FQP0yHmMBSw_z5y6gQyPFhwltv51aO5U,6189
200
- fractal_server/tasks/v2/ssh/__init__.py,sha256=GmhXfaoYv52FrjhEuOb8zrooFIgBDBf9odXSmeYsRBs,186
195
+ fractal_server/tasks/v2/local/collect.py,sha256=OIqvvXqI631MjHDGxYj3a7AmC0FhMZ2v2LD3RSZ18wU,12000
196
+ fractal_server/tasks/v2/local/collect_pixi.py,sha256=MAr48JqTbBIw72i2HC9NxgLjdu2Z76B_YlcOaiEb_UA,9865
197
+ fractal_server/tasks/v2/local/deactivate.py,sha256=jaJ-Ejq29JQTZpiQjWHCRf2yUPZUbnjvaQrqnNkmFuo,9836
198
+ fractal_server/tasks/v2/local/deactivate_pixi.py,sha256=S3ipLVwpzkpGpSKVsDBdiv3RBt0DsVL_sGux3I5aSg8,3597
199
+ fractal_server/tasks/v2/local/reactivate.py,sha256=ZZhwyoQQ8Lzkk18BB4l3pr8x8VI-MnZSoClKnMvTy14,5860
200
+ fractal_server/tasks/v2/local/reactivate_pixi.py,sha256=T7Rviv-vifg3D1UxHf4aIc-6hG1HdZ4phEyYEZVX7vo,6378
201
+ fractal_server/tasks/v2/ssh/__init__.py,sha256=vX5aIM9Hbn2T_cIP_LrZ5ekRqJzYm_GSfp-4Iv7kqeI,300
201
202
  fractal_server/tasks/v2/ssh/_utils.py,sha256=VAagoseIQW_fSsbwLencqQGyPflQii-Tvzk-r58g478,2834
202
- fractal_server/tasks/v2/ssh/collect.py,sha256=myqHfErAljmGLyp0g0nWHFdEbNDH40ipyQXIgHQuXh4,14886
203
- fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=0a3HRiZqWMwdteZBmltbzJUUeySFW2YBOHnQkaxv4qE,12931
204
- fractal_server/tasks/v2/ssh/deactivate.py,sha256=J4ZsVpU7vvZF-9H2esPoOC8TfU0IvXziYAg4VtcCIbM,12983
205
- fractal_server/tasks/v2/ssh/reactivate.py,sha256=qVjPSbnYMITRL6c7SyC--_IiCGFz-NTj4ze-htwVunI,8816
203
+ fractal_server/tasks/v2/ssh/collect.py,sha256=4PwHLEBjY6CV0URHfin47YXPQnhcoizBug2-Syh1CKQ,14543
204
+ fractal_server/tasks/v2/ssh/collect_pixi.py,sha256=C1hJE8GcROLFfPOT2YnmCDfCvO8jtaSsUzWlvxvSCQc,13273
205
+ fractal_server/tasks/v2/ssh/deactivate.py,sha256=A4v9pcualcGD7l-eWcnMbM0N0HEsectHFA9lJnDXlM0,12639
206
+ fractal_server/tasks/v2/ssh/deactivate_pixi.py,sha256=qksD9ccpjy0v8ckhbZUfcuFVJf5iL25nj6wHNqvDkUg,4947
207
+ fractal_server/tasks/v2/ssh/reactivate.py,sha256=IWekB37oCWzqiFvHe2ncsvL1qgM9RVCmqe3CMBaz5L8,8472
208
+ fractal_server/tasks/v2/ssh/reactivate_pixi.py,sha256=khOJuLon3l_Vj6whJWkcw7w0rnUsp6cq2fIdTTsZuFY,3789
206
209
  fractal_server/tasks/v2/templates/1_create_venv.sh,sha256=PK0jdHKtQpda1zULebBaVPORt4t6V17wa4N1ohcj5ac,548
207
210
  fractal_server/tasks/v2/templates/2_pip_install.sh,sha256=jMJPQJXHKznO6fxOOXtFXKPdCmTf1VLLWj_JL_ZdKxo,1644
208
211
  fractal_server/tasks/v2/templates/3_pip_freeze.sh,sha256=JldREScEBI4cD_qjfX4UK7V4aI-FnX9ZvVNxgpSOBFc,168
209
212
  fractal_server/tasks/v2/templates/4_pip_show.sh,sha256=qm1vPy6AkKhWDjCJGXS8LqCLYO3KsAyRK325ZsFcF6U,1747
210
213
  fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh,sha256=q-6ZUvA6w6FDVEoSd9O63LaJ9tKZc7qAFH72SGPrd_k,284
211
214
  fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh,sha256=A2y8RngEjAcRhG-_owA6P7tAdrS_AszFuGXnaeMV8u0,1122
212
- fractal_server/tasks/v2/templates/pixi_1_collect.sh,sha256=RHlhkcaboHcFyxEb0DscHkOYWTA7GDmC19rEyQTQBRs,2014
213
- fractal_server/tasks/v2/utils_background.py,sha256=L-x7X69uorrtuV0SK2SenTT0CAcEerXiF4NRiwLJEro,4567
215
+ fractal_server/tasks/v2/templates/pixi_1_extract.sh,sha256=1Z6sd_fTzqQkOfbFswaPZBNLUyv-OrS4euGlcoi8ces,1097
216
+ fractal_server/tasks/v2/templates/pixi_2_install.sh,sha256=lvqIUH3zVr2fhZfoEwjBqAzvYhX9fID6Cea-fPTHbOI,1315
217
+ fractal_server/tasks/v2/templates/pixi_3_post_install.sh,sha256=SfXl0l4wY1ygr-DErbaXrgg24UFU7wsz1O8zgbHV0NE,2618
218
+ fractal_server/tasks/v2/utils_background.py,sha256=_62JAee3DltnQn14HVGfFosssgiDTyuzFkPbw2RNB8M,4575
214
219
  fractal_server/tasks/v2/utils_database.py,sha256=yi7793Uue32O59OBVUgomO42oUrVKdSKXoShBUNDdK0,1807
215
220
  fractal_server/tasks/v2/utils_package_names.py,sha256=RDg__xrvQs4ieeVzmVdMcEh95vGQYrv9Hfal-5EDBM8,2393
216
- fractal_server/tasks/v2/utils_pixi.py,sha256=eX9aUXJpnbp1EAt-xAgysHP6ngUcpGLCLL4EL_nP_1Y,1126
221
+ fractal_server/tasks/v2/utils_pixi.py,sha256=QrRVtN8SZM_ZDoRadXK98R27irOvTJuZO4c_mCfJ92A,1221
217
222
  fractal_server/tasks/v2/utils_python_interpreter.py,sha256=5_wrlrTqXyo1YuLZvAW9hrSoh5MyLOzdPVUlUwM7uDQ,955
218
223
  fractal_server/tasks/v2/utils_templates.py,sha256=Kc_nSzdlV6KIsO0CQSPs1w70zLyENPqJeTQEFiz4bOg,3124
219
224
  fractal_server/types/__init__.py,sha256=aA_8J1xXzuiLqpwO_Qf18-qzaRcYkHzevhH_T-diXWM,2026
@@ -224,8 +229,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=HL
224
229
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
225
230
  fractal_server/utils.py,sha256=Vn35lApt1T1J8nc09sAVqd10Cy0sa3dLipcljI-hkuk,2185
226
231
  fractal_server/zip_tools.py,sha256=tqz_8f-vQ9OBRW-4OQfO6xxY-YInHTyHmZxU7U4PqZo,4885
227
- fractal_server-2.15.0a0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
228
- fractal_server-2.15.0a0.dist-info/METADATA,sha256=JqEKi9mWP2fp-0EXknj0OILaSBBOsuNdvSZSiZudDx8,4245
229
- fractal_server-2.15.0a0.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
230
- fractal_server-2.15.0a0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
231
- fractal_server-2.15.0a0.dist-info/RECORD,,
232
+ fractal_server-2.15.0a2.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
233
+ fractal_server-2.15.0a2.dist-info/METADATA,sha256=pPjPz3h14JS4StI6QZVCA4LU_9Yib5fDpINeID1PMv0,4245
234
+ fractal_server-2.15.0a2.dist-info/WHEEL,sha256=7dDg4QLnNKTvwIDR9Ac8jJaAmBC_owJrckbC0jjThyA,88
235
+ fractal_server-2.15.0a2.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
236
+ fractal_server-2.15.0a2.dist-info/RECORD,,
@@ -1,70 +0,0 @@
1
- set -e
2
-
3
- write_log(){
4
- TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
5
- echo "[collect-task-pixi, $TIMESTAMP] $1"
6
- }
7
-
8
- # Replacements
9
- PIXI_HOME="__PIXI_HOME__"
10
- PACKAGE_DIR="__PACKAGE_DIR__"
11
- TAR_GZ_PATH="__TAR_GZ_PATH__"
12
- IMPORT_PACKAGE_NAME="__IMPORT_PACKAGE_NAME__"
13
- SOURCE_DIR_NAME="__SOURCE_DIR_NAME__"
14
-
15
- # Strip trailing `/` from `PACKAGE_DIR`
16
- PIXI_HOME=${PIXI_HOME%/}
17
- PACKAGE_DIR=${PACKAGE_DIR%/}
18
-
19
- # Known paths
20
- PIXI_EXECUTABLE="${PIXI_HOME}/bin/pixi"
21
- SOURCE_DIR="${PACKAGE_DIR}/${SOURCE_DIR_NAME}"
22
- PYPROJECT_TOML="${SOURCE_DIR}/pyproject.toml"
23
- TAR_GZ_BASENAME=$(basename "$TAR_GZ_PATH" ".tar.gz")
24
-
25
- # Pixi env variable
26
- export PIXI_HOME="$PIXI_HOME"
27
- export PIXI_CACHE_DIR="${PIXI_HOME}/cache"
28
- export RATTLER_AUTH_FILE="${PIXI_HOME}/credentials.json"
29
-
30
-
31
- TIME_START=$(date +%s)
32
-
33
- cd "$PACKAGE_DIR"
34
- write_log "Changed working directory to $PACKAGE_DIR"
35
-
36
-
37
- write_log "START 'tar xz -f $TAR_GZ_PATH $TAR_GZ_BASENAME'"
38
- tar xz -f "$TAR_GZ_PATH" "$TAR_GZ_BASENAME"
39
- write_log "END 'tar xz -f $TAR_GZ_PATH $TAR_GZ_BASENAME'"
40
- echo
41
-
42
- write_log "START 'mv ${PACKAGE_DIR}/${TAR_GZ_BASENAME} $SOURCE_DIR'"
43
- mv "${PACKAGE_DIR}/${TAR_GZ_BASENAME}" "$SOURCE_DIR"
44
- write_log "END 'mv ${PACKAGE_DIR}/${TAR_GZ_BASENAME} $SOURCE_DIR'"
45
- echo
46
- write_log "END extract $TAR_GZ_PATH"
47
- TIME_END_TAR=$(date +%s)
48
- write_log "Elapsed: $((TIME_END_TAR - TIME_START)) seconds"
49
- echo
50
-
51
- write_log "START '$PIXI_EXECUTABLE install --manifest-path $PYPROJECT_TOML'"
52
- ${PIXI_EXECUTABLE} install --manifest-path "$PYPROJECT_TOML"
53
- write_log "END '$PIXI_EXECUTABLE install --manifest-path $PYPROJECT_TOML'"
54
- echo
55
-
56
- PACKAGE_FOLDER=$(
57
- ${PIXI_EXECUTABLE} run --manifest-path "$PYPROJECT_TOML" python \
58
- -c "import $IMPORT_PACKAGE_NAME as p, os; print(os.path.dirname(p.__file__))"
59
- )
60
- write_log "Package folder: $PACKAGE_FOLDER"
61
- echo
62
-
63
- ENV_DISK_USAGE=$(du -sk "${PACKAGE_DIR}" | cut -f1)
64
- ENV_FILE_NUMBER=$(find "${PACKAGE_DIR}" -type f | wc -l)
65
-
66
- write_log "Disk usage: $ENV_DISK_USAGE"
67
- write_log "Number of files: $ENV_FILE_NUMBER"
68
-
69
- write_log "All ok, exit."
70
- echo