2024-08-26 13:34:29 +02:00
|
|
|
SHELL = /bin/bash
|
2023-03-16 19:54:34 -07:00
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
.PHONY: help install install-uv install-python install-pre-commit install-sk clean build
|
|
|
|
|
.SILENT: # not strictly required, but included per the original example
|
2024-08-26 13:34:29 +02:00
|
|
|
all: install
|
2023-03-16 19:54:34 -07:00
|
|
|
|
2024-08-26 13:34:29 +02:00
|
|
|
ifeq ($(PYTHON_VERSION),)
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
PYTHON_VERSION = 3.10
|
2024-08-26 13:34:29 +02:00
|
|
|
endif
|
2023-03-16 19:54:34 -07:00
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
# Detect uv on PATH
|
|
|
|
|
UV_VERSION := $(shell command -v uv 2> /dev/null)
|
|
|
|
|
|
|
|
|
|
##############################
|
|
|
|
|
# HELP
|
|
|
|
|
##############################
|
2023-03-16 19:54:34 -07:00
|
|
|
.ONESHELL:
|
2024-08-26 13:34:29 +02:00
|
|
|
help:
|
|
|
|
|
echo -e "\033[1mUSAGE:\033[0m"
|
|
|
|
|
echo " make [target]"
|
|
|
|
|
echo ""
|
|
|
|
|
echo -e "\033[1mTARGETS:\033[0m"
|
|
|
|
|
echo " help - show this help message"
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
echo " install - install uv, python, Semantic Kernel, and all dependencies"
|
|
|
|
|
echo " This is the default and will use Python 3.10."
|
2024-08-26 13:34:29 +02:00
|
|
|
echo " install-uv - install uv"
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
echo " install-python - install multiple python distributions"
|
2024-08-26 13:34:29 +02:00
|
|
|
echo " install-sk - install Semantic Kernel and all dependencies"
|
|
|
|
|
echo " install-pre-commit - install pre-commit hooks"
|
|
|
|
|
echo " clean - remove the virtualenvs"
|
2024-08-27 18:45:09 +02:00
|
|
|
echo " build - build the project"
|
2024-08-26 13:34:29 +02:00
|
|
|
echo ""
|
|
|
|
|
echo -e "\033[1mVARIABLES:\033[0m"
|
|
|
|
|
echo " PYTHON_VERSION - Python version to use. Default is 3.10"
|
2025-02-12 14:05:39 +01:00
|
|
|
echo " By default, 3.10, 3.11, 3.12 and 3.13 are installed as well."
|
2024-08-26 13:34:29 +02:00
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
##############################
|
|
|
|
|
# INSTALL
|
|
|
|
|
##############################
|
2023-03-16 19:54:34 -07:00
|
|
|
install:
|
2024-08-26 13:34:29 +02:00
|
|
|
make install-uv
|
|
|
|
|
make install-python
|
|
|
|
|
make install-sk
|
|
|
|
|
make install-pre-commit
|
|
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
##############################
|
|
|
|
|
# INSTALL-UV
|
|
|
|
|
##############################
|
2024-08-26 13:34:29 +02:00
|
|
|
install-uv:
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
# If uv is not found AND we haven't already re-invoked with CONTINUE=1...
|
|
|
|
|
ifneq ($(UV_VERSION),)
|
|
|
|
|
echo "uv found at: $(UV_VERSION)"
|
|
|
|
|
echo "running uv self update"
|
|
|
|
|
uv self update
|
|
|
|
|
else ifeq ($(CONTINUE),1)
|
|
|
|
|
echo "Skipping uv re-install; continuing with the rest of the steps."
|
2024-11-29 14:45:58 +01:00
|
|
|
else
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
echo "uv could not be found."
|
|
|
|
|
echo "Installing uv..."
|
2025-02-19 08:52:12 +09:00
|
|
|
if [ -n "$$VIRTUAL_ENV" ]; then \
|
|
|
|
|
echo "Detected virtual environment at $$VIRTUAL_ENV, installing uv there..."; \
|
|
|
|
|
curl -LsSf https://astral.sh/uv/install.sh | INSTALL_DIR="$$VIRTUAL_ENV/bin" sh; \
|
|
|
|
|
else \
|
|
|
|
|
echo "No virtual environment detected, installing uv globally..."; \
|
|
|
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh; \
|
|
|
|
|
fi
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
echo "uv installed."
|
|
|
|
|
echo "Re-executing shell so uv is immediately available on PATH..."
|
|
|
|
|
exec $$SHELL -c 'make install CONTINUE=1'
|
2024-08-26 13:34:29 +02:00
|
|
|
endif
|
2023-03-16 19:54:34 -07:00
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
##############################
|
|
|
|
|
# INSTALL-PYTHON
|
|
|
|
|
##############################
|
2023-03-16 19:54:34 -07:00
|
|
|
.ONESHELL:
|
2024-08-26 13:34:29 +02:00
|
|
|
install-python:
|
2025-02-12 14:05:39 +01:00
|
|
|
echo "Installing python versions"
|
|
|
|
|
uv python install 3.10 3.11 3.12 3.13
|
2023-03-16 19:54:34 -07:00
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
##############################
|
|
|
|
|
# INSTALL-PRE-COMMIT
|
|
|
|
|
##############################
|
2024-08-26 13:34:29 +02:00
|
|
|
.ONESHELL:
|
|
|
|
|
install-pre-commit:
|
|
|
|
|
echo "Installing pre-commit hooks"
|
|
|
|
|
uv run pre-commit install -c python/.pre-commit-config.yaml
|
2023-03-16 19:54:34 -07:00
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
##############################
|
|
|
|
|
# INSTALL-SK
|
|
|
|
|
##############################
|
2023-03-16 19:54:34 -07:00
|
|
|
.ONESHELL:
|
2024-08-26 13:34:29 +02:00
|
|
|
install-sk:
|
|
|
|
|
echo "Creating and activating venv for python $(PYTHON_VERSION)"
|
|
|
|
|
uv venv --python $(PYTHON_VERSION)
|
|
|
|
|
echo "Installing Semantic Kernel and all dependencies"
|
2025-02-12 14:05:39 +01:00
|
|
|
uv sync --all-extras --dev --prerelease=if-necessary-or-explicit
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
|
|
|
|
|
##############################
|
|
|
|
|
# CLEAN
|
|
|
|
|
##############################
|
2024-08-26 13:34:29 +02:00
|
|
|
.ONESHELL:
|
|
|
|
|
clean:
|
2024-08-27 18:45:09 +02:00
|
|
|
rm -rf .venv
|
|
|
|
|
|
Python: improve Makefile uv installation logic (#10246)
### Motivation and Context
Today, If a user runs `make install`, and the uv installation is not
found, the current flow is to return `exit 1` to force the user to
restart their shell.
These changes update the Makefile to better handle the case where uv is
not installed. The Makefile now uses a “second make invocation” approach
with a CONTINUE variable to avoid re-installing uv in the newly spawned
shell. If `uv` isn’t found, it installs `uv`, then executes a new shell
which immediately calls `make install CONTINUE=1`, allowing the rest of
the steps to continue in an environment that now has `uv` on the PATH.
<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
1. Why is this change required?
2. What problem does it solve?
3. What scenario does it contribute to?
4. If it fixes an open issue, please link to the issue here.
-->
### Description
This PR:
- Updates the make file to provide cleaner logic on handling the `make
install` when `uv` isn't present.
- Closes #9067
<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
### Contribution Checklist
<!-- Before submitting this PR, please make sure: -->
- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone :smile:
2025-01-22 07:16:10 +09:00
|
|
|
##############################
|
|
|
|
|
# BUILD
|
|
|
|
|
##############################
|
2024-08-27 18:45:09 +02:00
|
|
|
build:
|
2024-09-03 17:33:08 -07:00
|
|
|
uvx --from build pyproject-build --installer uv
|