Conversation
The permission normalization step in first_time_install.sh was running chmod 644 on all files, which stripped executable bits from compiled library files (librgbmatrix.so.1) after make build-python created them. This caused LED panels to not work after fresh installation until users manually ran chmod on the rpi-rgb-led-matrix-master directory. Fixes #224 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Issues addressed: - Remove redundant python3-pillow from apt (Debian maps it to python3-pil) - Only upgrade pip, not setuptools/wheel (they conflict with apt versions) - Remove separate apt numpy install (pip handles it from requirements.txt) - Install web interface deps during first-time setup, not on every startup - Add marker file (.web_deps_installed) to skip redundant pip installs - Add user-friendly message about wait time after installation The web UI was taking 30-60+ seconds to start because it ran pip install on every startup. Now it only installs dependencies on first run. Fixes #208 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Step 7 was installing web dependencies again even though they were already installed in Step 5. Now Step 7 checks for the .web_deps_installed marker file and skips the installation if it already exists. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The .web_deps_installed marker file should only be created when pip install actually succeeds. Previously it was created regardless of the pip exit status, which could cause subsequent runs to skip installing missing dependencies. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The services were being started before config files existed, causing the web service to fail with "config.json not found". Reordered steps so config files are created (Step 4) before services are installed and started (Step 4.1). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The apt-installed pip cannot be upgraded because it doesn't have a RECORD file. Since the apt version (25.1.1) is already recent enough, we can skip the upgrade step entirely. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moved main LED Matrix service installation (Step 7.5) to after all Python dependencies are installed (Steps 5-7). Previously services were being started before pip packages and rgbmatrix were ready, causing startup failures. New order: - Step 5: Python pip dependencies - Step 6: rpi-rgb-led-matrix build - Step 7: Web interface dependencies - Step 7.5: Main LED Matrix service (moved here) - Step 8: Web interface service Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughReorganized Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Resolved conflicts: - Kept pip upgrade removal (apt-installed pip can't self-upgrade) - Kept Step 7.5 service installation after dependencies Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In `@first_time_install.sh`:
- Around line 514-516: The initial "This script will perform the following
steps" list must be updated to reflect the reordered steps so Step 4 matches the
updated CURRENT_STEP and echo "Step 4: Ensuring configuration files exist...";
locate the header/list block (the startup echo statements that enumerate steps)
and change the items so item 4 reads "Ensure configuration files exist" and
renumber subsequent entries to match the provided suggested sequence (including
fractional steps like 7.5/8.5/10.1 where applicable) so the step numbers align
with the CURRENT_STEP variable and the runtime echo lines.
- Around line 898-931: The script prints success even when setcap fails and may
call setcap on a symlink (which fails); update the capability block to resolve
the real binary (use readlink -f on /usr/bin/python3 and /usr/bin/python3.13),
check command -v setcap first, run sudo setcap on the resolved path, capture the
exit status, and only print the "✓ Python3... capabilities configured" message
when setcap succeeds (otherwise print a clear warning/error). Reference the
PYTHON_VER variable and the /usr/bin/python3(/3.13) paths used in the existing
conditional so the fix replaces the current setcap calls and success echoes.
- Updated step list header to match actual step order after reordering (Step 4 is now "Ensure configuration files exist", added Step 7.5 for main service, added Step 8.1 for systemd permissions) - Fixed Python capabilities configuration: - Check if setcap command exists before attempting to use it - Resolve symlinks with readlink -f to get the real binary path - Only print success message when setcap actually succeeds - Print clear warning with helpful info when setcap fails Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.