-
Notifications
You must be signed in to change notification settings - Fork 60
[WIP] hermetic build: Non binary #858
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -34,9 +34,41 @@ spec: | |||||||||||||||||||||||
| - name: build-source-image | ||||||||||||||||||||||||
| value: 'true' | ||||||||||||||||||||||||
| - name: prefetch-input | ||||||||||||||||||||||||
| value: '[{"type": "rpm", "path": "."}, {"type": "pip", "path": ".", "allow_binary": "true", "requirements_files": ["requirements.x86_64.txt", "requirements.aarch64.txt", "requirements.hermetic.txt", "requirements.torch.txt"]}]' | ||||||||||||||||||||||||
| value: | | ||||||||||||||||||||||||
| [ | ||||||||||||||||||||||||
| { | ||||||||||||||||||||||||
| "type": "rpm", | ||||||||||||||||||||||||
| "path": "." | ||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||
| { | ||||||||||||||||||||||||
| "type": "pip", | ||||||||||||||||||||||||
| "path": ".", | ||||||||||||||||||||||||
| "requirements_files": [ | ||||||||||||||||||||||||
| "requirements.x86_64.txt", | ||||||||||||||||||||||||
| "requirements.aarch64.txt", | ||||||||||||||||||||||||
| "requirements.hermetic.txt", | ||||||||||||||||||||||||
| "requirements.torch.txt", | ||||||||||||||||||||||||
| "requirements.binary.txt" | ||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||
| "requirements_build_files": [ | ||||||||||||||||||||||||
| "requirements-build.txt" | ||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||
| "binary": { | ||||||||||||||||||||||||
| "os": "linux", | ||||||||||||||||||||||||
| "arch": "x86_64,aarch64", | ||||||||||||||||||||||||
| "py_version": "312", | ||||||||||||||||||||||||
| "packages": "torch,faiss-cpu,uv,jiter,tiktoken" | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||
| { | ||||||||||||||||||||||||
| "type": "generic", | ||||||||||||||||||||||||
| "path": "." | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||
| - name: hermetic | ||||||||||||||||||||||||
| value: 'true' | ||||||||||||||||||||||||
| - name: hermeto-mode | ||||||||||||||||||||||||
| value: 'permissive' | ||||||||||||||||||||||||
|
Comment on lines
+70
to
+71
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing The 🔎 Proposed fixAdd the parameter declaration to - name: enable-cache-proxy
default: 'false'
description: Enable cache proxy configuration
type: string
+ - name: hermeto-mode
+ default: 'permissive'
+ description: Hermetic mode configuration for prefetch-dependencies
+ type: string
results:📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
| - name: dockerfile | ||||||||||||||||||||||||
| value: Containerfile | ||||||||||||||||||||||||
| pipelineSpec: | ||||||||||||||||||||||||
|
|
@@ -195,6 +227,8 @@ spec: | |||||||||||||||||||||||
| value: $(params.output-image).prefetch | ||||||||||||||||||||||||
| - name: ociArtifactExpiresAfter | ||||||||||||||||||||||||
| value: $(params.image-expires-after) | ||||||||||||||||||||||||
| - name: mode | ||||||||||||||||||||||||
| value: $(params.hermeto-mode) | ||||||||||||||||||||||||
|
Comment on lines
+230
to
+231
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove unsupported The 🔎 Proposed fixRemove lines 230-231: - name: ociArtifactExpiresAfter
value: $(params.image-expires-after)
- - name: mode
- value: $(params.hermeto-mode)
runAfter:If you need to pass the hermetic mode configuration to the prefetch task, encode it within the 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
| runAfter: | ||||||||||||||||||||||||
| - clone-repository | ||||||||||||||||||||||||
| taskRef: | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -31,9 +31,41 @@ spec: | |||||||||||
| - name: build-source-image | ||||||||||||
| value: 'true' | ||||||||||||
| - name: prefetch-input | ||||||||||||
| value: '[{"type": "rpm", "path": "."}, {"type": "pip", "path": ".", "allow_binary": "true", "requirements_files": ["requirements.x86_64.txt", "requirements.aarch64.txt", "requirements.hermetic.txt", "requirements.torch.txt"]}]' | ||||||||||||
| value: | | ||||||||||||
| [ | ||||||||||||
| { | ||||||||||||
| "type": "rpm", | ||||||||||||
| "path": "." | ||||||||||||
| }, | ||||||||||||
| { | ||||||||||||
| "type": "pip", | ||||||||||||
| "path": ".", | ||||||||||||
| "requirements_files": [ | ||||||||||||
| "requirements.x86_64.txt", | ||||||||||||
| "requirements.aarch64.txt", | ||||||||||||
| "requirements.hermetic.txt", | ||||||||||||
| "requirements.torch.txt", | ||||||||||||
| "requirements.binary.txt" | ||||||||||||
| ], | ||||||||||||
| "requirements_build_files": [ | ||||||||||||
| "requirements-build.txt" | ||||||||||||
| ], | ||||||||||||
| "binary": { | ||||||||||||
| "os": "linux", | ||||||||||||
| "arch": "x86_64,aarch64", | ||||||||||||
| "py_version": "312", | ||||||||||||
| "packages": "torch,faiss-cpu,uv,jiter,tiktoken" | ||||||||||||
| } | ||||||||||||
| }, | ||||||||||||
| { | ||||||||||||
| "type": "generic", | ||||||||||||
| "path": "." | ||||||||||||
| } | ||||||||||||
| ] | ||||||||||||
|
Comment on lines
+34
to
+64
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "=== Checking presence of prefetch requirement files ==="
for f in \
requirements.x86_64.txt \
requirements.aarch64.txt \
requirements.hermetic.txt \
requirements.torch.txt \
requirements.binary.txt \
requirements-build.txt
do
if find . -name "$f" -type f 2>/dev/null | head -1; then
echo "✓ found $f"
else
echo "✗ MISSING: $f"
fi
done
echo ""
echo "=== Checking Tekton file structure ==="
git ls-files .tekton/ | head -20Repository: lightspeed-core/lightspeed-stack Length of output: 599 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "=== Checking Tekton file structure and parameters ==="
# Get the full context of the file, focusing on parameter definitions and references
cat -n .tekton/lightspeed-stack-push.yaml | grep -E "(param|hermeto|mode)" -i
echo ""
echo "=== Full file to understand structure ==="
wc -l .tekton/lightspeed-stack-push.yamlRepository: lightspeed-core/lightspeed-stack Length of output: 3633 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "=== Examining parameter definitions section (lines 1-80) ==="
sed -n '1,80p' .tekton/lightspeed-stack-push.yaml
echo ""
echo "=== Examining the hermeto-mode usage context (lines 215-225) ==="
sed -n '215,225p' .tekton/lightspeed-stack-push.yaml
echo ""
echo "=== Checking if there are pipelineSpec.params ==="
grep -n "pipelineSpec:" .tekton/lightspeed-stack-push.yaml
</parameter>Repository: lightspeed-core/lightspeed-stack Length of output: 3980 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "=== Checking pipelineSpec.params section (lines 71-160) ==="
sed -n '71,160p' .tekton/lightspeed-stack-push.yaml
echo ""
echo "=== Searching for hermeto-mode in pipelineSpec.params ==="
sed -n '71,200p' .tekton/lightspeed-stack-push.yaml | grep -A 2 -B 2 "hermeto-mode" || echo "hermeto-mode NOT found in pipelineSpec.params section"Repository: lightspeed-core/lightspeed-stack Length of output: 4115 Add The prefetch-input JSON is syntactically valid and all referenced requirement files exist in the repository. However, the 🤖 Prompt for AI Agents |
||||||||||||
| - name: hermetic | ||||||||||||
| value: 'true' | ||||||||||||
| - name: hermeto-mode | ||||||||||||
| value: 'permissive' | ||||||||||||
|
Comment on lines
+67
to
+68
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing The 🔎 Proposed fixAdd the parameter declaration to + - name: hermeto-mode
+ default: 'permissive'
+ description: Hermetic mode configuration for prefetch-dependencies
+ type: string
results:
🤖 Prompt for AI Agents🧩 Analysis chain🏁 Script executed: cat -n .tekton/lightspeed-stack-push.yaml | head -80 | tail -20Repository: lightspeed-core/lightspeed-stack Length of output: 1564 🏁 Script executed: rg "hermeto-mode|hermetic-mode" -iRepository: lightspeed-core/lightspeed-stack Length of output: 58 🏁 Script executed: rg "hermeto|hermetic" -i --context 3Repository: lightspeed-core/lightspeed-stack Length of output: 3613 🏁 Script executed: rg "hermeto" -iRepository: lightspeed-core/lightspeed-stack Length of output: 58 🏁 Script executed: grep -r "hermeto-mode" . 2>/dev/null || echo "No matches found"Repository: lightspeed-core/lightspeed-stack Length of output: 361 🏁 Script executed: rg "mode.*permissive|permissive.*mode" -i -A 2 -B 2Repository: lightspeed-core/lightspeed-stack Length of output: 50390 Fix typo: rename The parameter is indeed misspelled. Line 65 of the same file correctly uses 🤖 Prompt for AI Agents |
||||||||||||
| - name: dockerfile | ||||||||||||
| value: Containerfile | ||||||||||||
| pipelineSpec: | ||||||||||||
|
|
@@ -186,6 +218,8 @@ spec: | |||||||||||
| value: $(params.output-image).prefetch | ||||||||||||
| - name: ociArtifactExpiresAfter | ||||||||||||
| value: $(params.image-expires-after) | ||||||||||||
| - name: mode | ||||||||||||
| value: $(params.hermeto-mode) | ||||||||||||
|
Comment on lines
+221
to
+222
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove unsupported The 🔎 Proposed fixRemove lines 221-222: - name: ociArtifactExpiresAfter
value: $(params.image-expires-after)
- - name: mode
- value: $(params.hermeto-mode)
runAfter:If you need to pass the hermetic mode configuration to the prefetch task, encode it within the 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||
| runAfter: | ||||||||||||
| - clone-repository | ||||||||||||
| taskRef: | ||||||||||||
|
|
||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,33 +5,56 @@ ARG APP_ROOT=/app-root | |
| ARG LSC_SOURCE_DIR=. | ||
|
|
||
| # UV_PYTHON_DOWNLOADS=0 : Disable Python interpreter downloads and use the system interpreter. | ||
| # MPLSETUPCFG=/tmp/mplsetup.cfg : matplotlib build configuration file | ||
| ENV UV_COMPILE_BYTECODE=0 \ | ||
| UV_LINK_MODE=copy \ | ||
| UV_PYTHON_DOWNLOADS=0 | ||
| UV_PYTHON_DOWNLOADS=0 \ | ||
| UV_LOCK_TIMEOUT=900 \ | ||
| MPLSETUPCFG=/tmp/mplsetup.cfg | ||
|
Comment on lines
+8
to
+13
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: The UV_PYTHON_DOWNLOADS / python-downloads setting accepts three string values:
UV_PYTHON_DOWNLOADS is the equivalent environment variable for this setting. [2] Sources: [1] Astral uv settings (python-downloads). [2] Astral uv environment variables (UV_PYTHON_DOWNLOADS). Use a documented uv expects - UV_PYTHON_DOWNLOADS=0 \
+ UV_PYTHON_DOWNLOADS=never \🤖 Prompt for AI Agents |
||
|
|
||
| WORKDIR /app-root | ||
|
|
||
| USER root | ||
|
|
||
| # Install gcc - required by polyleven python package on aarch64 | ||
| # (dependency of autoevals, no pre-built binary wheels for linux on aarch64) | ||
| RUN dnf install -y --nodocs --setopt=keepcache=0 --setopt=tsflags=nodocs gcc | ||
| # cargo is required by maturin | ||
| # freetype-devel is required by matplotlib | ||
| RUN dnf install -y --nodocs --setopt=keepcache=0 --setopt=tsflags=nodocs gcc cmake cargo freetype-devel | ||
|
|
||
| # Install uv package manager | ||
| RUN pip3.12 install "uv>=0.8.15" | ||
|
|
||
| # Generate matplotlib setup.cfg file, use the system freetype library | ||
| RUN echo "[libs]" > ${MPLSETUPCFG} && \ | ||
| echo "system_freetype = True" >> ${MPLSETUPCFG} | ||
|
|
||
| # Add explicit files and directories | ||
| # (avoid accidental inclusion of local directories or env files or credentials) | ||
| COPY ${LSC_SOURCE_DIR}/src ./src | ||
| COPY ${LSC_SOURCE_DIR}/pyproject.toml ${LSC_SOURCE_DIR}/LICENSE ${LSC_SOURCE_DIR}/README.md ${LSC_SOURCE_DIR}/uv.lock ${LSC_SOURCE_DIR}/requirements.*.txt ./ | ||
|
|
||
| # Extract generic dependencies from artifacts.lock.yaml and install them | ||
| RUN if [ -f /cachi2/cachi2.env ]; then \ | ||
| tar -xzf /cachi2/output/deps/generic/googletest-release-1.12.1.tar.gz -C /tmp && \ | ||
| cd /tmp/googletest-release-1.12.1 && \ | ||
| cmake . && \ | ||
| make && \ | ||
| make install; \ | ||
| fi | ||
|
Comment on lines
+37
to
+44
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Re‑evaluate the googletest build block; it still looks like unused build‑time work. This block builds and installs
Given the extra compile/link time, consider dropping this block unless there’s a concrete consumer (e.g., native extension tests that actually run in this image). If you do need it, a brief comment explaining the dependency chain would help future reviewers. 🤖 Prompt for AI Agents |
||
|
|
||
| # Bundle additional dependencies for library mode. | ||
| # Source cachi2 environment for hermetic builds if available, otherwise use normal installation | ||
| # cachi2.env has these env vars: | ||
| # PIP_FIND_LINKS=/cachi2/output/deps/pip | ||
| # PIP_NO_INDEX=true | ||
| RUN if [ -f /cachi2/cachi2.env ]; then \ | ||
| . /cachi2/cachi2.env && uv venv --seed --no-index --find-links ${PIP_FIND_LINKS} && . .venv/bin/activate && pip install --no-index --find-links ${PIP_FIND_LINKS} -r requirements.$(uname -m).txt -r requirements.torch.txt; \ | ||
| . /cachi2/cachi2.env && \ | ||
| uv venv --no-index --find-links ${PIP_FIND_LINKS} && \ | ||
| echo "Installing requirements.binary.txt and requirements.torch.txt" && \ | ||
| uv pip install --no-index --find-links ${PIP_FIND_LINKS} --no-build --no-deps -r requirements.binary.txt -r requirements.torch.txt && \ | ||
| echo "Installing requirements.$(uname -m).txt" && \ | ||
| uv pip install --no-index --find-links ${PIP_FIND_LINKS} --no-binary :all: --no-deps -r requirements.$(uname -m).txt ; \ | ||
| else \ | ||
| uv sync --locked --no-dev --group llslibdev; \ | ||
| fi | ||
|
Comment on lines
51
to
60
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The prefetch-input JSON in the Tekton pipelines includes
If 🔎 Proposed fix RUN if [ -f /cachi2/cachi2.env ]; then \
. /cachi2/cachi2.env && \
uv venv --no-index --find-links ${PIP_FIND_LINKS} && \
echo "Installing requirements.binary.txt and requirements.torch.txt" && \
uv pip install --no-index --find-links ${PIP_FIND_LINKS} --no-build --no-deps -r requirements.binary.txt -r requirements.torch.txt && \
echo "Installing requirements.$(uname -m).txt" && \
- uv pip install --no-index --find-links ${PIP_FIND_LINKS} --no-binary :all: --no-deps -r requirements.$(uname -m).txt ; \
+ uv pip install --no-index --find-links ${PIP_FIND_LINKS} --no-binary :all: --no-deps -r requirements.$(uname -m).txt && \
+ echo "Installing requirements.hermetic.txt" && \
+ uv pip install --no-index --find-links ${PIP_FIND_LINKS} --no-binary :all: --no-deps -r requirements.hermetic.txt ; \
else \
uv sync --locked --no-dev --group llslibdev; \
fi🤖 Prompt for AI Agents |
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,7 +6,8 @@ PYTHON_REGISTRY = pypi | |
|
|
||
| # PyTorch version | ||
| TORCH_VERSION := 2.7.1 | ||
|
|
||
| # Faiss version | ||
| FAISS_VERSION := 1.13.0 | ||
|
|
||
| run: ## Run the service locally | ||
| uv run src/lightspeed_stack.py | ||
|
|
@@ -113,7 +114,7 @@ konflux-requirements: ## generate hermetic requirements.*.txt file for konflux b | |
| uv pip compile pyproject.toml -o requirements.aarch64.txt --generate-hashes --group llslibdev --python-platform aarch64-unknown-linux-gnu --torch-backend cpu --python-version 3.12 --refresh | ||
| ./scripts/remove_torch_deps.sh requirements.x86_64.txt | ||
| ./scripts/remove_torch_deps.sh requirements.aarch64.txt | ||
| echo "torch==${TORCH_VERSION}" | uv pip compile - -o requirements.torch.txt --generate-hashes --python-version 3.12 --torch-backend cpu --emit-index-url --no-deps --index-url https://download.pytorch.org/whl/cpu --refresh | ||
| uv run pybuild-deps compile --output-file=requirements-build.txt requirements.aarch64.txt requirements.x86_64.txt requirements.hermetic.txt | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # First, let's find the Makefile and check line 117
find . -name "Makefile" -type f | head -20Repository: lightspeed-core/lightspeed-stack Length of output: 86 🏁 Script executed: # Also search for requirements files
fd "requirements.*\.txt" . | head -30Repository: lightspeed-core/lightspeed-stack Length of output: 232 🏁 Script executed: # Check if requirements-build.txt exists
test -f requirements-build.txt && echo "exists" || echo "does not exist"Repository: lightspeed-core/lightspeed-stack Length of output: 82 🏁 Script executed: # Check Makefile around line 117
sed -n '110,125p' MakefileRepository: lightspeed-core/lightspeed-stack Length of output: 1136 🏁 Script executed: # Check if requirements-build.txt has duplicates using the script from the review
cat requirements-build.txt | awk -F'==' '
/^[A-Za-z0-9_.-]+==/ {
gsub(/[[:space:]]+$/, "", $1)
pkg=$1
count[pkg]++
lines[pkg] = lines[pkg] " " NR
}
END {
dup=0
for (p in count) {
if (count[p] > 1) {
printf "Duplicate: %s (count=%d, lines:%s)\n", p, count[p], lines[p]
dup=1
}
}
if (dup == 0) {
print "No duplicates found"
}
exit dup
}
'Repository: lightspeed-core/lightspeed-stack Length of output: 264 🏁 Script executed: # Also check the content of requirements-build.txt to understand its structure
wc -l requirements-build.txt && echo "---" && head -20 requirements-build.txtRepository: lightspeed-core/lightspeed-stack Length of output: 598 🏁 Script executed: # Check the actual duplicate lines to see if they have conflicting versions
echo "=== Checking duplicate entries ===" && \
echo "--- cython lines 19, 21 ---" && sed -n '19p;21p' requirements-build.txt && \
echo "--- hatchling lines 81, 86 ---" && sed -n '81p;86p' requirements-build.txt && \
echo "--- meson-python lines 137, 139 ---" && sed -n '137p;139p' requirements-build.txt && \
echo "--- setuptools-scm lines 210, 212 ---" && sed -n '210p;212p' requirements-build.txtRepository: lightspeed-core/lightspeed-stack Length of output: 393 🏁 Script executed: # Let's also check the input files to understand the conflict sources
echo "=== requirements.aarch64.txt ===" && grep -E "^(cython|hatchling|meson-python|setuptools-scm)==" requirements.aarch64.txt && \
echo "=== requirements.x86_64.txt ===" && grep -E "^(cython|hatchling|meson-python|setuptools-scm)==" requirements.x86_64.txt && \
echo "=== requirements.hermetic.txt ===" && grep -E "^(cython|hatchling|meson-python|setuptools-scm)==" requirements.hermetic.txtRepository: lightspeed-core/lightspeed-stack Length of output: 108 🏁 Script executed: # Let's verify pip would actually fail with these conflicting versions
# Check what happens when trying to install conflicting pins
echo "Testing if conflicting versions would cause pip install failure..."
python3 << 'EOF'
# These are the conflicting versions found
conflicts = {
'cython': ['3.1.8', '3.2.4'],
'hatchling': ['1.26.3', '1.28.0'],
'meson-python': ['0.16.0', '0.18.0'],
'setuptools-scm': ['7.1.0', '9.2.2']
}
print("Conflicting package versions in requirements-build.txt:")
for pkg, versions in conflicts.items():
print(f" {pkg}: {versions[0]} and {versions[1]}")
print(f" -> pip install would fail: can't install both versions simultaneously")
EOFRepository: lightspeed-core/lightspeed-stack Length of output: 619 🏁 Script executed: # Check if there's any documentation in the repo about pybuild-deps behavior
find . -name "*.md" -o -name "*.rst" -o -name "*.txt" | xargs grep -l "pybuild-deps" 2>/dev/null | head -5Repository: lightspeed-core/lightspeed-stack Length of output: 100 The pybuild-deps merge produces conflicting package versions that will cause pip install failures. Verification confirms that requirements-build.txt contains duplicate entries with conflicting versions:
These are transitive dependencies from different input files. The pybuild-deps merge logic cannot resolve these conflicting versions, resulting in an unusable requirements file that will fail during pip install. Consider either:
🤖 Prompt for AI Agents |
||
|
|
||
| help: ## Show this help screen | ||
| @echo 'Usage: make <OPTIONS> ... <TARGETS>' | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| metadata: | ||
| version: "1.0" | ||
| artifacts: | ||
| - download_url: "https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz" | ||
| checksum: "sha256:81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2" | ||
| filename: "googletest-release-1.12.1.tar.gz" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -122,6 +122,8 @@ dev = [ | |
| "openapi-to-md>=0.1.0b2", | ||
| "pytest-subtests>=0.14.2", | ||
| "bandit>=1.8.6", | ||
| "pybuild-deps==0.5.0", | ||
| "pip==24.3.1", | ||
|
Comment on lines
+125
to
+126
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # First, locate and read the pyproject.toml file to understand the context
find . -name "pyproject.toml" -type f | head -1Repository: lightspeed-core/lightspeed-stack Length of output: 92 🏁 Script executed: # Read the pyproject.toml file around lines 125-126 to see the context
wc -l pyproject.toml && sed -n '115,135p' pyproject.tomlRepository: lightspeed-core/lightspeed-stack Length of output: 612 🌐 Web query:
💡 Result: pybuild-deps 0.5.0 — summary
Sources: 🌐 Web query:
💡 Result: pip 24.3.1 — released 2024-10-27. It’s documented in the pip changelog (24.3.1: “Allow multiple nested inclusions of the same requirements file again”) and listed on the PyPI project page. [1][2] Sources:
🌐 Web query:
💡 Result: I found no CVE or public vulnerability record for pybuild-deps 0.5.0. Sources: Safety DB shows "No known vulnerabilities" for pybuild-deps 0.5.0 [1], and the PyPI release page for 0.5.0 (Mar 15, 2025) has no security advisory listed [2]. References:
If you want, I can run a deeper scan (OSV/NVD/GitHub Advisory searches) and report back with any related findings. 🌐 Web query:
💡 Result: Short answer: Yes — pip 24.3.1 is known to have security issues. Specifically:
Recommendation: upgrade pip to the latest fixed release (at least 25.2, or 25.0+ to address the code-execution issue) and audit any environments where pip 24.x was used. [1][3] Sources: Upgrade pip to version 25.2 or later due to critical security vulnerabilities. pybuild-deps==0.5.0 is valid and has no known vulnerabilities. However, pip==24.3.1 has two critical security issues:
Upgrade pip to at least 25.2 to address both vulnerabilities. 🤖 Prompt for AI Agents |
||
| ] | ||
| llslibdev = [ | ||
| # To check llama-stack API provider dependecies: | ||
|
|
||
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.
🧩 Analysis chain
🌐 Web query:
prefetch-dependencies-oci-ta task documentation binary configuration schema💡 Result:
Summary of the binary/configuration schema for the prefetch-dependencies-oci-ta task
Example (canonical form shown in observed invocation):
{"packages":[{"path":"yq","type":"gomod"}, {"type":"rpm"}],"flags":["gomod-vendor"]}. [1]
Sources
If you want, I can fetch the task bundle YAML (task definition) from the quay bundle reference and extract the exact parameter schema and result names.
🌐 Web query:
Tekton prefetch-dependencies-oci-ta:0.2 input parameters prefetch-input💡 Result:
prefetch-input (aka PREFETCH_INPUT) is the pipeline parameter passed into the konflux task prefetch-dependencies-oci-ta that tells the task what to prefetch (packages/flags and related options). It is provided as the pipeline param (e.g. $(params.prefetch-input)) and forwarded into the task (environment/param named PREFETCH_INPUT). Typical usage is a JSON blob describing packages and flags (for example: {"packages":[{"path":"yq","type":"gomod"},{"type":"rpm"}], "flags":["gomod-vendor"]}). See Konflux docs and an example attestation showing the task invocation parameters. [1][2]
Sources:
🌐 Web query:
konflux-ci prefetch-dependencies task pip requirements binary format💡 Result:
Short answer: Konflux’s prefetch-dependencies task supports Python/pip by consuming a requirements.txt of pinned binary wheels (wheel URLs/filenames) (used for hermetic builds), and produces an OCI trusted‑artifact (the .prefetch OCI image) that later build tasks consume. See Konflux docs on dependency support (Python/pip tools) and the repo notes about generating requirements.txt containing wheels plus the prefetch-dependencies invocation being recorded in the build attestation. [1][2][3]
Relevant pointers:
If you want, tell me:
Sources:
🏁 Script executed:
Repository: lightspeed-core/lightspeed-stack
Length of output: 2037
🏁 Script executed:
Repository: lightspeed-core/lightspeed-stack
Length of output: 162
The
prefetch-inputconfiguration structure is incompatible with the prefetch-dependencies-oci-ta:0.2 task.The
prefetch-inputuses a JSON array with type-specific objects (lines 36-67), but the documented task schema expects a single JSON object withpackagesand optionalflagsarrays. The format should be:{"packages":[{"path":"path","type":"rpm"},{"path":"path","type":"pip"},{"type":"generic"}],"flags":[]}The task does not support the undocumented fields in the current configuration:
requirements_files,requirements_build_filesin the pip objectbinaryconfiguration object withos,arch,py_version,packagesAdditionally, line 71 has
hermeto-modewhich appears to be a typo and should behermetic-mode.🤖 Prompt for AI Agents