10 Commits
Author SHA1 Message Date
agessaman 198536a2fe build(armv7): resolve 32-bit ARM dependencies to wheels via piwheels
Ten dependencies publish no prebuilt armv7 wheel on PyPI (PyNaCl,
pycryptodome, ephem, pyephem, brotli, cffi, MarkupSafe, librt,
backports.zstd, sgmllib3k) and compiled from source on 32-bit ARM. On a
Raspberry Pi 2 that is hours of work and a likely OOM at 1 GB RAM, and in
CI it meant recompiling them under QEMU on every arm/v7 build.

piwheels supplies prebuilt armv7 wheels for those packages. The remaining
two gaps are version skew rather than missing builds: pip prefers the
newest release across indexes, and for brotli and ephem the newest PyPI
release is one step ahead of piwheels' current cp311 build. Holding those
two one version back lets the whole set resolve to wheels.

Measured in a linux/arm/v7 container against requirements.txt:

  PyPI only ............................ 10 compiled from source
  + piwheels extra-index-url ...........  2 compiled from source
  + constraints-armv7.txt ..............  0 compiled - 75/75 wheels

No other package is held back; cryptography, aiohttp, pycryptodome and
PyNaCl all resolve to current releases.

- constraints-armv7.txt: the two pins, with measurements and a command to
  re-check them as piwheels catches up. platform_machine markers make the
  file a no-op if applied off-ARM.
- install-service.sh: configure_armv7_pip_args, gated on uname -m and
  wired into both pip call sites. Warns rather than fails if the
  constraints file is absent.
- Dockerfile: same treatment for the linux/arm/v7 leg only, via
  TARGETPLATFORM. amd64 and arm64 keep resolving from PyPI alone.
- config.ini.pi2-example: document what to do per install method.

Verified: arm/v7 builder stage completes in 2:49 with zero source builds;
amd64 builder stage unaffected with zero piwheels downloads; arch gating
exercised for x86_64, aarch64 and armv7l; 73 config tests pass.

Note that piwheels is now an additional trusted index on the arm/v7 leg
and on 32-bit ARM native installs.
2026-08-06 22:51:37 -07:00
agessaman 301c231f12 Update Dockerfile to include additional dependencies for improved build environment
- Added `libffi-dev` and `libssl-dev` to the first RUN command for enhanced support of cryptographic operations.
- Included `libffi8` in the second RUN command to ensure compatibility with specific libraries.

These changes optimize the Docker image for building applications that require these libraries.
2026-04-03 11:57:27 -07:00
agessaman 7bc4efff31 Update Dockerfile and GitHub Actions workflow for improved build process
- Modified the Dockerfile to set ownership of copied files directly during the copy operation, enhancing file permissions management.
- Updated the GitHub Actions workflow to limit the build platforms to linux/arm64 and linux/arm/v7, streamlining the build process for specific architectures.

These changes improve the efficiency and reliability of the Docker image build process.
2026-04-03 06:56:41 -07:00
Stacy Olivas 5b6f2829b8 infra: Docker multi-arch build with SBOM and provenance
Add .github/workflows/docker-build.yml triggered on push to main and
version tags. Builds linux/amd64, linux/arm64, and linux/arm/v7 via
QEMU. Attaches SBOM and provenance attestations to the image manifest.
Update Dockerfile with non-root user and current Python base image.
2026-03-17 18:07:18 -07:00
agessaman 6dcf256c77 Simplify contact removal logic and add versioning to webviewer. 2026-02-19 19:39:32 -08:00
agessaman 09662337bb fix: Enhance database schema migration for improved reliability
- Updated the database migration logic to handle missing tables gracefully, ensuring that migrations for existing installations do not block the process.
- Added checks for the existence of specific columns in the `repeater_contacts`, `complete_contact_tracking`, and `mesh_connections` tables, allowing for more robust schema updates.
- Introduced logging for migration errors to improve visibility and troubleshooting during the migration process.
- Ensured that the migration runs seamlessly for users accessing the web viewer without prior bot startup, enhancing user experience.
2026-02-11 22:26:34 -08:00
agessaman 58901a2857 chore: Update docker-setup.sh and documentation for improved serial device handling and logging
- Enhanced docker-setup.sh to ensure device mappings are correctly moved from the volumes section to the devices section in Docker Compose files.
- Added checks for serial device permissions and provided detailed instructions in DOCKER.md for resolving permission issues.
- Updated Dockerfile to add the meshcore user to the dialout group for serial port access, improving compatibility with serial devices.
- Improved logging functionality in core.py to handle log file paths more robustly, ensuring directories are created as needed and handling errors gracefully.
2026-01-17 12:12:33 -08:00
agessaman f81555f821 chore: Update Docker documentation and optimize Dockerfile for caching
- Revised DOCKER.md to recommend building directly with `docker build` for improved compatibility on ARM devices and clarified the use of host network mode.
- Enhanced Dockerfile to utilize cache mounts for apt and pip installations, improving build efficiency and reducing redundant downloads.
- Updated GitHub Actions workflow to support multi-platform builds for both amd64 and arm64 architectures, ensuring broader compatibility.
2026-01-17 10:10:59 -08:00
agessaman c8649ab250 chore: Simplify docker-compose.yml and enhance Docker documentation
- Removed unnecessary version declaration from docker-compose.yml.
- Added detailed troubleshooting steps for build failures on ARM devices in DOCKER.md, including network mode adjustments and Docker daemon checks.
- Updated Dockerfile to maintain consistent casing in the build stage declaration.
2026-01-17 09:48:05 -08:00
agessaman 61445b4811 feat: Update README and .gitignore for Docker deployment
- Added Docker deployment instructions to the README, including steps for creating data directories, updating configuration paths, and starting the application with Docker Compose.
- Updated .gitignore to include a new data directory structure, ensuring user-specific configurations, databases, and logs are ignored while maintaining the directory structure.
2026-01-17 08:34:38 -08:00