Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
12e3298
adding immutable distro support
fcaraujo Nov 20, 2025
0611222
troubleshooting pep668
fcaraujo Nov 20, 2025
828d02b
pep668 friendly
fcaraujo Nov 20, 2025
f480a32
troubleshooting permissions now
fcaraujo Nov 20, 2025
829611d
fixing missing/correct path handling
fcaraujo Nov 20, 2025
244ed47
removing unnecessary logs
fcaraujo Nov 20, 2025
8bb35de
ensuring path owning
fcaraujo Nov 20, 2025
cfc925f
now let's make this sucker run
fcaraujo Nov 20, 2025
36c0d82
fixed service path
fcaraujo Nov 20, 2025
72cfa3a
light variant icon
fcaraujo Nov 20, 2025
5d75665
Revert "light variant icon"
fcaraujo Nov 20, 2025
a221149
makefile implementation
fcaraujo Nov 21, 2025
d74e076
debugging failures
fcaraujo Nov 21, 2025
589f983
fixing venv path
fcaraujo Nov 21, 2025
2696ca2
fixing venv dependencies
fcaraujo Nov 21, 2025
3901ef0
debugging makefile targets
fcaraujo Nov 21, 2025
6d910b5
checking step 7 failure
fcaraujo Nov 21, 2025
272bc1d
clean up/trimming
fcaraujo Nov 21, 2025
3d305fd
debugging test container
fcaraujo Nov 21, 2025
3381fc7
dynamic shell ftw
fcaraujo Nov 21, 2025
c84e7cb
ogod...
fcaraujo Nov 21, 2025
4e8e27e
test properly w containers
fcaraujo Nov 21, 2025
8b2bfb1
build correctly
fcaraujo Nov 21, 2025
20780b0
using the correct tag reference
fcaraujo Nov 21, 2025
7cb5247
CLEAN UP!!!
fcaraujo Nov 21, 2025
da818d5
fixing service dependencies
fcaraujo Nov 21, 2025
a938e2b
clarifying instructions
fcaraujo Nov 21, 2025
9d454a3
fixing desktop shortcut for user installation method
fcaraujo Nov 21, 2025
09995ba
adjusting desktop path
fcaraujo Nov 21, 2025
c164b19
applying fixes to makefile as well
fcaraujo Nov 21, 2025
92378a8
migrating installation method
fcaraujo Nov 21, 2025
a353377
completed makefile migration
fcaraujo Nov 21, 2025
914e446
fixing auto-start after reboot
fcaraujo Nov 21, 2025
930a5a5
fixing startup dependencies
fcaraujo Nov 21, 2025
b7ef28d
adjusting hyprland startup dependency
fcaraujo Nov 21, 2025
ab66a9f
still adjusting startup...
fcaraujo Nov 21, 2025
ee6da49
tray icon configuration
fcaraujo Nov 22, 2025
cdaae6f
tray icon double click behaviour
fcaraujo Nov 22, 2025
1b0f85c
fixing double click behaviour
fcaraujo Nov 22, 2025
5ceca4c
debugging tray icon double click
fcaraujo Nov 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,10 @@ dist/
include/
lib/
lib64
.build-venv/
package_managers/deb/
package_managers/rpm/
*.pyc
*.pyo
*.egg-info/
.pytest_cache/
159 changes: 159 additions & 0 deletions Dockerfile.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# ============================================================================
# Multi-stage Dockerfile for Testing Linux-Arctis-Manager Installation
# Tests the complete user workflow: build → install → verify
# ============================================================================

ARG BASE_IMAGE=fedora:latest

# ============================================================================
# Stage 1: Build
# ============================================================================
FROM ${BASE_IMAGE} AS builder

# Install build dependencies
RUN if command -v dnf >/dev/null 2>&1; then \
dnf install -y python3 python3-pip python3-devel gcc make git findutils; \
elif command -v apt-get >/dev/null 2>&1; then \
apt-get update && \
apt-get install -y python3 python3-pip python3-venv python3-dev gcc make git; \
elif command -v apk >/dev/null 2>&1; then \
apk add --no-cache python3 py3-pip python3-dev gcc musl-dev make git findutils bash; \
fi

WORKDIR /build

# Copy source code
COPY . .

# Run build (tests pyinstaller packaging)
RUN echo "==> Testing make build..." && \
make build && \
echo "✓ Build successful"

# Verify binaries were created
RUN echo "==> Verifying binaries..." && \
test -f dist/arctis-manager && \
test -f dist/arctis-manager-launcher && \
echo "✓ Binaries found"

# Test that binaries are executable
RUN echo "==> Testing binary execution..." && \
(dist/arctis-manager --help || dist/arctis-manager --version || echo "Binary runs") && \
echo "✓ Binaries are executable"

# ============================================================================
# Stage 2: System Installation Test
# ============================================================================
FROM ${BASE_IMAGE} AS install-test-system

# Install only runtime dependencies (not build deps!)
RUN if command -v dnf >/dev/null 2>&1; then \
dnf install -y python3 systemd make; \
elif command -v apt-get >/dev/null 2>&1; then \
apt-get update && \
apt-get install -y python3 systemd make; \
elif command -v apk >/dev/null 2>&1; then \
apk add --no-cache python3 openrc make bash; \
fi

WORKDIR /test

# Copy source (for Makefile and assets)
COPY --from=builder /build .

# Test system-wide installation using DESTDIR (simulates package building)
RUN echo "==> Testing system installation with DESTDIR..." && \
mkdir -p /tmp/install-root && \
make install-system DESTDIR=/tmp/install-root PREFIX=/usr && \
echo "✓ Installation successful"

# Verify installed files exist in staging area
RUN echo "==> Verifying installed files..." && \
test -f /tmp/install-root/usr/bin/arctis-manager && \
test -f /tmp/install-root/usr/bin/arctis-manager-launcher && \
test -f /tmp/install-root/usr/share/applications/ArctisManager.desktop && \
test -f /tmp/install-root/usr/share/icons/hicolor/scalable/apps/arctis_manager.svg && \
test -f /tmp/install-root/usr/lib/systemd/user/arctis-manager.service && \
echo "✓ All files installed correctly"

# Verify file permissions
RUN echo "==> Verifying file permissions..." && \
test -x /tmp/install-root/usr/bin/arctis-manager && \
test -x /tmp/install-root/usr/bin/arctis-manager-launcher && \
echo "✓ Binaries are executable"

# Copy to actual system location to test execution
RUN cp /tmp/install-root/usr/bin/arctis-manager /usr/local/bin/ && \
cp /tmp/install-root/usr/bin/arctis-manager-launcher /usr/local/bin/ && \
echo "==> Testing installed binary..." && \
(arctis-manager --help || arctis-manager --version || echo "Installed binary runs") && \
echo "✓ Installed binary works"

# Verify systemd service file is valid
RUN echo "==> Verifying systemd service..." && \
grep -q "ExecStart.*arctis-manager" /tmp/install-root/usr/lib/systemd/user/arctis-manager.service && \
echo "✓ Service file is valid"

# ============================================================================
# Stage 3: User Installation Test (simulates Bazzite/Atomic workflow)
# ============================================================================
FROM ${BASE_IMAGE} AS install-test-user

# Install runtime dependencies
RUN if command -v dnf >/dev/null 2>&1; then \
dnf install -y python3 systemd make sudo; \
elif command -v apt-get >/dev/null 2>&1; then \
apt-get update && \
apt-get install -y python3 systemd make sudo; \
elif command -v apk >/dev/null 2>&1; then \
apk add --no-cache python3 openrc make sudo bash; \
fi

# Create a test user (simulates real user workflow)
RUN useradd -m -s /bin/bash testuser

WORKDIR /home/testuser/build

# Copy source as test user would (git clone simulation)
COPY --from=builder /build .
RUN chown -R testuser:testuser .

# Test user installation as non-root user
USER testuser

RUN echo "==> Testing user installation to ~/.local..." && \
mkdir -p ~/.local/bin ~/.local/share/applications ~/.local/share/icons/hicolor/scalable/apps ~/.local/share/systemd/user && \
make install-user && \
echo "✓ User installation successful"

# Verify installed files in user home
RUN echo "==> Verifying user-installed files..." && \
test -f ~/.local/bin/arctis-manager && \
test -f ~/.local/bin/arctis-manager-launcher && \
test -f ~/.local/share/applications/ArctisManager.desktop && \
test -f ~/.local/share/icons/hicolor/scalable/apps/arctis_manager.svg && \
test -f ~/.local/share/systemd/user/arctis-manager.service && \
echo "✓ All user files installed correctly"

# Test binary execution from user installation
RUN echo "==> Testing user-installed binary..." && \
(~/.local/bin/arctis-manager --help || ~/.local/bin/arctis-manager --version || echo "User binary runs") && \
echo "✓ User-installed binary works"

# ============================================================================
# Stage 4: Final Success (all tests passed)
# ============================================================================
FROM alpine:latest AS success

RUN echo "========================================" && \
echo "✓ ALL TESTS PASSED!" && \
echo "========================================" && \
echo "" && \
echo "Tests completed:" && \
echo " ✓ Build (pyinstaller packaging)" && \
echo " ✓ System installation (DESTDIR + PREFIX)" && \
echo " ✓ User installation (~/.local)" && \
echo " ✓ Binary execution" && \
echo " ✓ File permissions" && \
echo " ✓ Systemd service" && \
echo ""
Loading