-
Notifications
You must be signed in to change notification settings - Fork 2.8k
[NEWTON]Enables omni-client be installed with packman #4141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[NEWTON]Enables omni-client be installed with packman #4141
Conversation
Greptile OverviewGreptile SummaryThis PR enables installation of Major Changes:
Issues Found:
Confidence Score: 3/5
Important Files ChangedFile Analysis
Sequence DiagramsequenceDiagram
participant User
participant isaaclab.sh
participant install_omni_client_packman.py
participant CDN as CloudFront CDN
participant Site as site-packages
participant from_files.py
participant assets.py as assets.py (utils)
participant omni.client
participant S3 as AWS S3
User->>isaaclab.sh: ./isaaclab.sh --install
isaaclab.sh->>install_omni_client_packman.py: Execute installer
Note over install_omni_client_packman.py: Check if py7zr available
install_omni_client_packman.py->>install_omni_client_packman.py: pip install py7zr if needed
install_omni_client_packman.py->>CDN: Download omni_client_library.7z
CDN-->>install_omni_client_packman.py: Return 7z archive
install_omni_client_packman.py->>install_omni_client_packman.py: Extract to cache dir
install_omni_client_packman.py->>Site: Copy Python bindings to _omni_client
install_omni_client_packman.py->>Site: Copy native libs (.so files)
install_omni_client_packman.py->>Site: Create symlinks for lib access
install_omni_client_packman.py->>Site: Write .pth file
install_omni_client_packman.py->>Site: Create dist-info for pip
Note over User,from_files.py: Runtime - USD file spawning
User->>from_files.py: spawn_from_usd(usd_path)
from_files.py->>assets.py: check_file_path(usd_path)
assets.py->>omni.client: stat(usd_path)
omni.client-->>assets.py: Return status (local=1, remote=2, not found=0)
assets.py-->>from_files.py: Return file_status=2 (remote)
from_files.py->>assets.py: retrieve_file_path(usd_path)
Note over assets.py: Recursive download loop
loop For each USD file and dependencies
assets.py->>omni.client: copy(remote_url, local_path)
omni.client->>S3: Download file
S3-->>omni.client: Return file data
omni.client-->>assets.py: File copied
assets.py->>assets.py: _find_usd_references(local_path)
Note over assets.py: Parse USD with Sdf.Layer<br/>Extract references, payloads,<br/>sublayers, asset paths
assets.py->>assets.py: _resolve_reference_url(base_url, ref)
Note over assets.py: Add resolved refs to download queue
end
assets.py-->>from_files.py: Return local_root path
from_files.py->>from_files.py: Create USD prim from local file
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
4 files reviewed, 7 comments
Description
This is an alternative to PR #4134 which provide solution as client.py
here is a brief discussion around pros and cons between these choices
Created a new folder tools/installation as the first step to use modular python file for installation decoupling
USD Client Options
Option 1:
client.py(pure Python) #4134Pros
Cons
urllib)stats(url) -> ResultOK,ERROR_NOT_FOUND,ERROR_PERMISSION_DENIED,ERROR_NETWORK,ERROR_UNKNOWNread_file(url) -> data in memorycopy(url, local_path)→ downloads fileOption 2:
omni.clientvia PackmanPros
stats,read_file,copyCons
omni_client.7zto temp folder and extract content.release/bindings-python/omni/...into_omni_client/and writesomni_client.pthlibomni*.so*into_omni_client/lib/_omni_client/omni/client/Type of change
Screenshots
Please attach before and after screenshots of the change if applicable.
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there